Hi,

On 01-01-15 14:37, Michal Suchanek wrote:
Hello

On 30 December 2014 at 11:18, Siarhei Siamashka
<[email protected]> wrote:
On Thu, 25 Dec 2014 11:59:55 +0100
Hans de Goede <[email protected]> wrote:

Hi,

On 25-12-14 11:00, Chen-Yu Tsai wrote:
Hi,

On Thu, Dec 25, 2014 at 3:06 AM, Hans de Goede <[email protected]> wrote:
Enable the new LCD support on Ippo_q8h tablets.

Signed-off-by: Hans de Goede <[email protected]>
---
   configs/Ippo_q8h_v1_2_defconfig | 5 ++++-
   configs/Ippo_q8h_v5_defconfig   | 5 ++++-
   2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/configs/Ippo_q8h_v1_2_defconfig b/configs/Ippo_q8h_v1_2_defconfig
index fefed32..c773f5f 100644
--- a/configs/Ippo_q8h_v1_2_defconfig
+++ b/configs/Ippo_q8h_v1_2_defconfig
@@ -1,7 +1,10 @@
   CONFIG_SPL=y
   CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
   CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v1.2.dtb"
-CONFIG_VIDEO=n
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH7"
+CONFIG_VIDEO_LCD_BL_EN="PH6"
+CONFIG_VIDEO_LCD_BL_PWM="PH0"
   CONFIG_USB_KEYBOARD=n
   +S:CONFIG_ARM=y
   +S:CONFIG_ARCH_SUNXI=y
diff --git a/configs/Ippo_q8h_v5_defconfig b/configs/Ippo_q8h_v5_defconfig
index b8d3afe..ce4f0b8 100644
--- a/configs/Ippo_q8h_v5_defconfig
+++ b/configs/Ippo_q8h_v5_defconfig
@@ -1,7 +1,10 @@
   CONFIG_SPL=y
   CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
   CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v5.dtb"
-CONFIG_VIDEO=n
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0"

The display on my Q8H is a bit off to the left. With the simplefb
bindings from your kernel sunxi-wip branch, I get a nice console.
Though I've no way to type, at least I can tell my tablet is on. :)

Could you briefly explain how to convert the values in the fex
file to the mode line here? It could also help others with
enabling display on their tablets.

Ah yes, I used the slightly different timings from the olimex 7" lcd
panel for olinuxino boards, and since those worked fine on my a23
tablet I never adjusted things. Here is a translation table:


CONFIG_VIDEO_LCD_MODE         fex value(s)

x                             lcd_x
y                             lcd_y
depth:18                      lcd_frm = 1
pclk_khz                      lcd_dclk_freq * 1000
hs                            lcd_hv_hspw (with a minimum of 1)
vs                            lcd_hv_vspw (with a minimum of 1)
le                            lcd_hbp - hs
ri                            lcd_ht - lcd_x - lcd_hbp
up                            lcd_vbp - vs

On sun4i/sun5i/sun7i:
lo                            (lcd_vt / 2) - lcd_y - lcd_vbp
On sun8i:
lo                            lcd_vt - lcd_y - lcd_vbp

sync                          0
mode                          0

I notice that the Ippo_q8h_v5 fex uses 0 for lcd_hv_hspw and lcd_hv_vspw, which
is not a valid value as the register value contains hspw - 1, so the minimum is 
1,
and looking at a register dump under android with my A23 tablet the value indeed
should be 1.

That's interesting. What would be the correct general formula for the
hs/vs values then? "max(lcd_hv_hspw, 1)" or maybe "lcd_hv_hspw + 1"?

BTW, I have done a preliminary automatic conversion for all FEX
files from sunxi-boards, which enable lcd0 in fex. The results are
now available at the all the same http://linux-sunxi.org/LCD wiki page.
If "hs = lcd_hv_hspw + 1" is a better choice, then the whole table
probably needs to be re-generated.

Also additional explanations about GPIO related options (what would be
the exact rules to interpret FEX?) and more details about "lcd_frm" and
"lcd_if" would help a lot to get a better understanding about what
still needs to be done to get LCD displays supported on all devices.

If I understand it correctly, the kernel sources from the Allwinner SDK
contain the relevant code for handling the information from FEX, and
this code is the best reference. And it's more reliable to refer to
A23 SDK for interpreting the FEX files originally snatched from A23
devices, and likewise A31 SDK for A31 devices. For example, it is not
uncommon to see both 'lcd_pwm_used' and 'lcd_pwm_not_used' variables
defined in FEX. And sometimes the values of these variables even
contradict each other. So the fine details about the relative
priorities of these variables and other similar things might need
to be discovered for perfectly correct conversion.

FWIW this is fex file for q8h v1.0.

I had some problem getting anything to boot on it since v1.0 does not
seem to have an uart so this device is completely unsupported so far
and the fex file is not posted anywhere.

If it is anything like my v1.2, which from your description it seems
to be, then it does have the usual prcm uart / uart_r which other
q8h versions have, but the stock firmware does not use the uart, for
me the 2 test pins next to the SoC work fine with our own u-boot, that
is how I developed the A23 DRAM support.

For starters try builing the v1_2 defconfig from my personal sunix-wip
branch:

https://github.com/jwrdegoede/u-boot-sunxi/tree/sunxi-wip

And write that to an sdcard, I would not be surprised if that simply
works and will light up the LCD screen and show the u-boot tux as prove :)

You can also use fel booting with a breakout board as Siarhei suggested,
or you can try the test pads on the pcb with upstream u-boot they will
probably work fine that way.

Thanks for the fex file, I've just pushed it to sunxi-boards.

Regards,

Hans

--
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to