Hello.
Zoom OMAP35x SOM devkit.
We are trying to connect another display to devkit.
Hardware connection is already done (at least as sad our engineer :) ).
So, the question is how to set resolution and 24bit color mode?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello.
Zoom OMAP35x SOM devkit.
We are trying to connect another display to devkit.
Hardware connection is already done (at least as sad our engineer :) ).
So, the question is how to set resolution and 24bit color mode?
Have a look at the following Wiki page and the associated links.
http://processors.wiki.ti.com/index.php/Display_Subsystem
BR,
Steve
Thanks for answer.
Is these some special things how to work with non-standart resolution?
In my case it is 800x480 on my new display.
I tried to set it using SYSFS entry. Resolution is really changed, but /sys/devices/platform/omapfb/graphics/fb0/modes still contains 480x272 mode, as in standart lcd-display resolution.
My steps is:
1. set standart resolution using bootargs (system can`t start without it)
2. write new resolution parameters to /sys/devices/platform/omapdss/display0/timings
after it i starting program, that draws some graphics.
it defines, that EGL window surface has width 480 and height 272 pixels.
???
Thanks.
Alexey,
There is not anything special you should need to do for these dynamic resolutions, but the methodology does depend on which Kernel version you are on.
Have a look at the following which may give more information to you...
http://processors.wiki.ti.com/index.php/UserGuideDisplayDrivers_PSP_03.00.00.05
http://processors.wiki.ti.com/index.php/UserGuideOmap35xCaptureDriver_PSP_03.00.00.05
http://processors.wiki.ti.com/index.php/Adding_new_DVI_resolutions
http://processors.wiki.ti.com/index.php/Display_Subsystem
BR,
Steve
Steve, thanks to you answers.
Now i know how to resolution and color depth mode.
But, there is another problem.
Out engineer, who makes physical connection to lcd-display, say that additional color bits (Blue0, Blue6, Blue7, Green6, Green7, Red0, Red6, Red7)
are always 0. So, display shows graphics still in 16bpp mode.
I changed color depth as it described in article http://processors.wiki.ti.com/index.php/GSG:_AM35x_and_OMAP35x_Graphics_SDK_Additional_Procedures#Testing_the_support_for_ARGB8888_in_Frame_Buffer_Driver
Alexey,
There are 2 parts to this.
1) the frame buffer format
2) the output format
They can be different, and in fact often are since you can have multiple, and different, frame buffers all overlayed on the same output display.
Please look at hardware register DISPC_CONTROL in order to set the correct "TFTDATALINES" value. This controls how many of the parallel output pins are active.
The frame buffer needs to be configured as per your requirements but as I say, can be a completely different format to the actual outputs.
BR,
Steve
Steve
Sorry for stupid question, but how to view/change hardware registers?
Give me please link to articles about this.
Thanks,
Aleksey
Aleksey,
You can use these two functions to read and write physical addresses...
unsigned long ReadPhysical(unsigned long Address)
{
int fd;
void *map_base, *virt_addr;
unsigned long read_result;
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, Address & ~MAP_MASK);
if(map_base == (void *) -1) FATAL;
virt_addr = map_base + (Address & MAP_MASK);
read_result = *((unsigned long *) virt_addr);
if(munmap(map_base, MAP_SIZE) == -1) FATAL;
close(fd);
return read_result;
}
void WritePhysical(unsigned long Address, unsigned long Data)
{
int fd;
void *map_base, *virt_addr;
if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, Address & ~MAP_MASK);
if(map_base == (void *) -1) FATAL;
virt_addr = map_base + (Address & MAP_MASK);
*((unsigned long *) virt_addr) = Data;
if(munmap(map_base, MAP_SIZE) == -1) FATAL;
close(fd);
}
BR,
Steve