Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rock/Hdmi Resolution"

(Created page with "Note: 1) the method is suit for rock pro, rock lite & rock2 square 2) the method is suit for Android & Linux Step 1: Get the EDID parameter by tools Note: There is just too...")
 
Line 1: Line 1:
Note:
+
'''Note:'''
 +
 
 
1) the method is suit for rock pro, rock lite & rock2 square
 
1) the method is suit for rock pro, rock lite & rock2 square
 +
 
2) the method is suit for Android & Linux
 
2) the method is suit for Android & Linux
  
Step 1: Get the EDID parameter by tools  
+
'''Step 1: Get the EDID parameter by tools'''
 +
 
 
Note: There is  just tool under windows, we will provide tool under linux Later
 
Note: There is  just tool under windows, we will provide tool under linux Later
  
Line 9: Line 12:
  
 
2 )Install sm_setup.exe, then run it (SoftMCCS)
 
2 )Install sm_setup.exe, then run it (SoftMCCS)
 +
 +
[[File:wiki_hdmi_resolution_1.png]]
 +
 +
 +
3) Select your Display Mode, then choose "File->Save EDID as " and save the file as "Raylar EDID file (*.dat)",  you can open and edit the dat file, you will see as below:
 +
 +
[[File:wiki_hdmi_resolution_2.png]]
 +
 +
'''Step2: Parse the EDID file  by tool (Phoenix)'''
 +
 +
you can download here http://dl.radxa.com/users/yao/Phoenix.zip
 +
run the tool, "File -> Open EDID..." to open the dat file saved by SoftMCCS
 +
 +
 +
[[File:wiki_hdmi_resolution_3.png]]
 +
 +
Select "Detailed Timings"
 +
 +
[[File:wiki_hdmi_resolution_4.png]]
 +
 +
From the above picture, we can get these parameter needed by driver file.
 +
 +
"kernel/drivers/video/rockchip/hdmi/hdmi-lcdc.c"
 +
 +
/*  name  refresh xres  yres    pixclock  h_bp    h_fp    v_bp    v_fp    h_pw    v_pw  polariry      PorI    flag    vic      2ndvic      pixelrepeat    interface */
 +
 +
{ {    "1440x900p@60Hz",        60,      1440,  900,    106500000,    232,    80,    25,    3,              152,    6,                      0,                              0,      0      },      2,      0,        1,      OUT_P888},
 +
 +
Note :
 +
 +
H  = Horizontal, V = vertical
 +
 +
Pixel Clk: 106500000 (106.50MHz)
 +
 +
Resolution: xres=1440, yres=900.
 +
 +
h_fp = H sync Offset = 80
 +
 +
h_pw = H sync width = 152;
 +
 +
h_bp = H Blank - h_fp - h_pw = 464 - 80 - 152 = 232;
 +
 +
v_fp = V Sync Offset = 3
 +
 +
v_pw = V sync width = 6
 +
 +
v_bp = V Blank - v_fp -v_pw = 25
 +
 +
Add line like “1440x900p@60Hz....”use the parameter value above. (the other parameter can use like ""1440x900p@60Hz..." )
 +
 +
Then  cd kernel, make clean and re-compile
 +
 +
 +
'''Step 3: Flash the image, and set the resolution'''
 +
 +
Android:
 +
 +
you can set by Settings->Display->HDMI Mode
 +
 +
Linux:
 +
 +
#cat /sys/class/display/display0.HDMI/modes
 +
 +
1920x1080p-60
 +
 +
...
 +
 +
1440x900p-60
 +
 +
..
 +
 +
echo #echo 1440x900p-60 > /sys/class/display/display0.HDMI/mode
 +
 +
The above are the whole steps. we have serveral customers tested ok. but we can't make sure it is fitted for all.
 +
 +
 +
'''Q&A'''
 +
 +
1) After set the new resolution, I found the refresh frequency is not the same as the setting. e.g. I set "1360x768@60Hz",the display shows "1360x768@46", what's the problem.
 +
 +
It caused by the pixclock changed by the system.  The system will choose another value it think more suitable base on the pixclock you set on the "drivers/video/rockchip/hdmi/hdmi-lcdc.c",  you can get the value for kernel log.
 +
 +
e.g. 
 +
 +
I modify "1360x768@60Hz, pixclock = 85500000". in the  "drivers/video/rockchip/hdmi/hdmi-lcdc.c", but the result shows on display is "1360x768@46Hz",
 +
 +
At last I found the pixclock clock the system used is "75000000" not "85500000" we set like the below message.
 +
 +
[  119.205896] lcdc1: dclk:75000000>>fps:46
 +
 +
 +
then how to fix this?
 +
 +
Use the pixclock "75000000" set by the system,  adjusts the values of " h_fp,h_bp,h_pw. v_fp,v_bp,v_pw" to fit the formula
 +
 +
(xres + h_fp + h_bp + h_pw) x (yres + v_fp + v_bp + v_pw) * fps = pixclock.  (the fps is refresh frequency value. e.g. 1360x768@60Hz, the fps = 60)
 +
 +
then update the value in the "drivers/video/rockchip/hdmi/hdmi-lcdc.c".
 +
 +
 +
2)The resolution and fps are all right. but the screen shows mess
 +
 +
It caused by the values of "h_fp,h_bp,h_pw. v_fp,v_bp,v_pw" are not suitable, you can adjust them base on
 +
 +
(xres + h_fp + h_bp + h_pw) x (yres + v_fp + v_bp + v_pw) * fps = pixclock. and then update on the file
 +
 +
"drivers/video/rockchip/hdmi/hdmi-lcdc.c".
 +
 +
3)I can't  found the resolution item after I add the new resolution  in "drivers/video/rockchip/hdmi/hdmi-lcdc.c".
 +
 +
Make sure you execute "make clean" under kernel and re-compile.

Revision as of 07:21, 1 June 2015

Note:

1) the method is suit for rock pro, rock lite & rock2 square

2) the method is suit for Android & Linux

Step 1: Get the EDID parameter by tools

Note: There is just tool under windows, we will provide tool under linux Later

1) Download the tools here: http://dl.radxa.com/users/yao/sm_setup.exe

2 )Install sm_setup.exe, then run it (SoftMCCS)

Wiki hdmi resolution 1.png


3) Select your Display Mode, then choose "File->Save EDID as " and save the file as "Raylar EDID file (*.dat)", you can open and edit the dat file, you will see as below:

Wiki hdmi resolution 2.png

Step2: Parse the EDID file by tool (Phoenix)

you can download here http://dl.radxa.com/users/yao/Phoenix.zip run the tool, "File -> Open EDID..." to open the dat file saved by SoftMCCS


Wiki hdmi resolution 3.png

Select "Detailed Timings"

Wiki hdmi resolution 4.png

From the above picture, we can get these parameter needed by driver file.

"kernel/drivers/video/rockchip/hdmi/hdmi-lcdc.c"

/* name refresh xres yres pixclock h_bp h_fp v_bp v_fp h_pw v_pw polariry PorI flag vic 2ndvic pixelrepeat interface */

{ { "1440x900p@60Hz", 60, 1440, 900, 106500000, 232, 80, 25, 3, 152, 6, 0, 0, 0 }, 2, 0, 1, OUT_P888},

Note :

H = Horizontal, V = vertical

Pixel Clk: 106500000 (106.50MHz)

Resolution: xres=1440, yres=900.

h_fp = H sync Offset = 80

h_pw = H sync width = 152;

h_bp = H Blank - h_fp - h_pw = 464 - 80 - 152 = 232;

v_fp = V Sync Offset = 3

v_pw = V sync width = 6

v_bp = V Blank - v_fp -v_pw = 25

Add line like “1440x900p@60Hz....”use the parameter value above. (the other parameter can use like ""1440x900p@60Hz..." )

Then cd kernel, make clean and re-compile


Step 3: Flash the image, and set the resolution

Android:

you can set by Settings->Display->HDMI Mode

Linux:

#cat /sys/class/display/display0.HDMI/modes

1920x1080p-60

...

1440x900p-60

..

echo #echo 1440x900p-60 > /sys/class/display/display0.HDMI/mode

The above are the whole steps. we have serveral customers tested ok. but we can't make sure it is fitted for all.


Q&A

1) After set the new resolution, I found the refresh frequency is not the same as the setting. e.g. I set "1360x768@60Hz",the display shows "1360x768@46", what's the problem.

It caused by the pixclock changed by the system. The system will choose another value it think more suitable base on the pixclock you set on the "drivers/video/rockchip/hdmi/hdmi-lcdc.c", you can get the value for kernel log.

e.g.

I modify "1360x768@60Hz, pixclock = 85500000". in the "drivers/video/rockchip/hdmi/hdmi-lcdc.c", but the result shows on display is "1360x768@46Hz",

At last I found the pixclock clock the system used is "75000000" not "85500000" we set like the below message.

[ 119.205896] lcdc1: dclk:75000000>>fps:46


then how to fix this?

Use the pixclock "75000000" set by the system, adjusts the values of " h_fp,h_bp,h_pw. v_fp,v_bp,v_pw" to fit the formula

(xres + h_fp + h_bp + h_pw) x (yres + v_fp + v_bp + v_pw) * fps = pixclock. (the fps is refresh frequency value. e.g. 1360x768@60Hz, the fps = 60)

then update the value in the "drivers/video/rockchip/hdmi/hdmi-lcdc.c".


2)The resolution and fps are all right. but the screen shows mess

It caused by the values of "h_fp,h_bp,h_pw. v_fp,v_bp,v_pw" are not suitable, you can adjust them base on

(xres + h_fp + h_bp + h_pw) x (yres + v_fp + v_bp + v_pw) * fps = pixclock. and then update on the file

"drivers/video/rockchip/hdmi/hdmi-lcdc.c".

3)I can't found the resolution item after I add the new resolution in "drivers/video/rockchip/hdmi/hdmi-lcdc.c".

Make sure you execute "make clean" under kernel and re-compile.