From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Date: Tue, 30 Dec 2014 11:26:51 +0100 Subject: [U-Boot] [PATCH 15/17] sunxi: Ippo_q8h defconfigs: Enable the LCD panel found on these tablets. In-Reply-To: <20141230121802.36365251@i7> References: <1419447989-21959-1-git-send-email-hdegoede@redhat.com> <1419447989-21959-16-git-send-email-hdegoede@redhat.com> <549BEE2B.5070803@redhat.com> <20141230121802.36365251@i7> Message-ID: <54A27DEB.1000005@redhat.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, On 30-12-14 11:18, Siarhei Siamashka wrote: > On Thu, 25 Dec 2014 11:59:55 +0100 > Hans de Goede 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 wrote: >>>> Enable the new LCD support on Ippo_q8h tablets. >>>> >>>> Signed-off-by: Hans de Goede >>>> --- >>>> 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"? Looking at the register values set by android vs the fex file, the correct formula is "max(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. Cool, thanks for doing this! > 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. Currently basically only lcd_if = 0 and lcd_frm = 1 are supported, it should be possible to add support for other lcd_frm = x values easily, so if you encounter those let me know, lcd_if != 0 is going to be much harder to support and currently is not on my schedule. > 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. All I can say here is that I agree with the above, I'm afraid I'm not familiar enough with the (quite large) sunxi display code in the SDK kernels to provide answers here. Regards, Hans