All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 15/17] sunxi: Ippo_q8h defconfigs: Enable the LCD panel found on these tablets.
Date: Thu, 01 Jan 2015 21:15:58 +0100	[thread overview]
Message-ID: <54A5AAFE.6020302@redhat.com> (raw)
In-Reply-To: <20150101220355.407e6185@i7>

Hi,

On 01-01-15 21:03, Siarhei Siamashka wrote:
> On Wed, 31 Dec 2014 12:22:17 +0100
> Hans de Goede <hdegoede@redhat.com> wrote:
>
>> On 30-12-14 13:17, Siarhei Siamashka wrote:
>>> On Tue, 30 Dec 2014 11:26:51 +0100
>>> Hans de Goede <hdegoede@redhat.com> wrote:
>>>
>>>> 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.
>>>
>>> It's all in the orange part of the table at the bottom. The lcd_frm = 0
>>> seems to be relatively common. The links to FEX files for each device
>>> are also there in the table and can be used to confirm the details.
>>>
>>> The http://linux-sunxi.org/Wexler_TAB_7200 tablet with its fex file
>>> https://github.com/linux-sunxi/sunxi-boards/blob/master/sys_config/a20/wexler_tab_7200.fex
>>> is one of the examples.
>>
>> Ok, so I've looked this up in the linux-sunxi code again to freshen my
>> memory, and grepping that code gives this:
>>
>> drivers/video/sunxi/disp/ebios_lcdc_tve.h
>> 51:     LCDC_FRM_RGB888 = 0,
>> 52:     LCDC_FRM_RGB666 = 1,
>> 53:     LCDC_FRM_RGB656 = 2,
>>
>> All 3 of which are already supported (but other then LCDC_FRM_RGB666
>> untested) in the u-boot lcd code :
>>
>>       LCDC_FRM_RGB888 -> depth:24
>>       LCDC_FRM_RGB666 -> depth:18
>>       LCDC_FRM_RGB656 -> depth:17
>>
>> So this results in the following translation:
>>
>>       lcd_frm = 0  -> depth:24
>>       lcd_frm = 1  -> depth:18
>>       lcd_frm = 2  -> depth:17
>
> In fact the 'lcd_frm' FEX option only controls dithering. The color
> depth is controlled by the 'lcd_cpu_if' FEX option. These color
> depth settings end up in the TCON0_CPU_IF_REG register, and your
> LCD patches currently unconditionally set it to 18-bit depth
> anyway.

Erm, no lcd_cpu_if only gets used if lcd_if == 1, likewise the
lcd_ttl settings only get used if the lcd_if == 2.

Which reminds me your script should check that lcd_hv_if == 0,
because we do not support the other variants atm.

> There is also a wiki page, describing FEX settings with a lot of
> useful information there:
>      http://linux-sunxi.org/Fex_Guide#lcd.5B0.2F1.5D_configuration
>
> As for the dithering settings, you can try to compare the results of
> having "depth:0" vs. "depth:18" in CONFIG_VIDEO_LCD_MODE and using
> the following simple test program.
>
> With "depth:0", the picture looks correct, but blocky (6 bits per
> color component is not great for gradients without dithering).
> With "depth:18", the picture looks smooth.
>
> /******** Display a gradient picture ************/
> #include <stdint.h>
> #include <stdio.h>
> #include <fcntl.h>
> #include <linux/fb.h>
> #include <sys/ioctl.h>
> #include <sys/mman.h>
>
> int main()
> {
>      int fd, x, y;
>      uint32_t *fb;
>      struct fb_fix_screeninfo finfo;
>      struct fb_var_screeninfo vinfo;
>
>      if ((fd = open("/dev/fb0", O_RDWR)) == -1) {
>          printf("Can't open /dev/fb0\n");
>          return 1;
>      }
>
>      if (ioctl(fd, FBIOGET_FSCREENINFO, &finfo)) {
>          printf("FBIOGET_FSCREENINFO failed\n");
>          return 1;
>      }
>
>      if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo)) {
>          printf("FBIOGET_VSCREENINFO failed\n");
>          return 1;
>      }
>
>      if (vinfo.bits_per_pixel != 32) {
>          printf("Only 32bpp framebuffer is supported\n");
>          return 1;
>      }
>
>      fb = mmap(0, finfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
>      if (fb == (void *)-1) {
>          printf("mmap failed\n");
>          return 1;
>      }
>
>      for (y = 0; y < vinfo.yres; y++)
>          for (x = 0; x < vinfo.xres; x++)
>              fb[y * vinfo.xres + x] = (255 * x / vinfo.xres) * 0x000100 +
>                                       (255 * y / vinfo.yres) * 0x010001;
>
>      return 0;
> }
> /************************************************/
>
> So "lcd_frm = 0" is not expected to cause any problems and is
> already supported. But naming and meaning of the options in the
> CONFIG_VIDEO_LCD_MODE string could be improved.

That string uses a standard u-boot parsing function, so we cannot easily
change it.

> I just wonder why there are so many FEX files with lcd_frm = 0. It
> does not seem to be a great idea, unless there is some good reason.

The parallel lcd interface which is used in most cases, and which we
support has 8 data pins for each color, which is why using 24 bit mode
also works with non 24 bit displays, they simply ignore the lower bits
likely displays which use lcd_frm = 0 actually use all 24 bits.

Regards,

Hans

p.s.

1) I'm working on support for lvds displays as I have an A10 tablet
lying around which I've never worked on until now (it was confiscated
by my children) and it actually turns out to have an lvds display,
so cpu_if = 3 should be supported soonish.

2) I'm going afk for 3 days, so my next reply in this thread will be
a bit slower then usual.

  reply	other threads:[~2015-01-01 20:15 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-24 19:06 [U-Boot] sunxi: video: Add LCD output and A13-Olinuxino VGA output support Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 01/17] videomodes: Add support for refresh and pclk_khz to video_get_params() Hans de Goede
2014-12-28  9:27   ` Ian Campbell
2015-01-08 17:23   ` Anatolij Gustschin
2014-12-24 19:06 ` [U-Boot] [PATCH 02/17] sunxi: gpio: Properly sort mux defines by port number Hans de Goede
2014-12-28  9:28   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 03/17] sunxi: gpio: Add support for gpio pins on the AXP209 pmic Hans de Goede
2014-12-28  9:34   ` Ian Campbell
2014-12-28 10:35     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 04/17] sunxi: video: Drop disabling of backend / lcdc / hdmi encoder on modeset Hans de Goede
2014-12-28  9:34   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 05/17] sunxi: video: Improve monitor video-mode option handling Hans de Goede
2014-12-28  9:40   ` Ian Campbell
2014-12-28 10:55     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 06/17] sunxi: video: Prepare for lcd support Hans de Goede
2014-12-28  9:41   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 07/17] sunxi: video: Modify sunxi_lcdc_pll_set to work with both tcon0 and tcon1 Hans de Goede
2014-12-29 13:36   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 08/17] sunxi: video: Move sunxi_drc_init Hans de Goede
2014-12-25  9:08   ` Chen-Yu Tsai
2014-12-25 10:22     ` Hans de Goede
2014-12-29 13:37       ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 09/17] sunxi: video: Add lcd output support Hans de Goede
2014-12-29 13:43   ` Ian Campbell
2014-12-31 11:59     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 10/17] sunxi: video: Add suppport SoCs without HDMI, e.g. the A13 and A23 Hans de Goede
2014-12-29 13:50   ` Ian Campbell
2014-12-31 12:07     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 11/17] sunxi: video: Add support for VGA via external DACs connected to the LCD pins Hans de Goede
2014-12-29 13:51   ` Ian Campbell
2014-12-29 19:25     ` Hans de Goede
2014-12-30  2:21       ` Chen-Yu Tsai
2014-12-30 10:21         ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 12/17] sunxi: sunxi-common.h: Reduce bootm_size to take the framebuffer into account Hans de Goede
2014-12-29 13:52   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 13/17] sunxi: A13-OLinuXino defconfigs: Enable VGA output, add lcd-mode for 7" LCD Hans de Goede
2014-12-29 13:53   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 14/17] sunxi: Add 2 defconfigs for using the Olimex 7" lcd with olinuxino boards Hans de Goede
2014-12-29 13:55   ` Ian Campbell
2014-12-29 19:27     ` Hans de Goede
2014-12-30  7:25       ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 15/17] sunxi: Ippo_q8h defconfigs: Enable the LCD panel found on these tablets Hans de Goede
2014-12-25 10:00   ` Chen-Yu Tsai
2014-12-25 10:59     ` Hans de Goede
2014-12-26  6:44       ` Chen-Yu Tsai
2014-12-26 10:48         ` Hans de Goede
2014-12-29 13:57         ` Ian Campbell
2014-12-29 15:56           ` Chen-Yu Tsai
2014-12-29 19:31             ` Hans de Goede
2014-12-30 10:18       ` Siarhei Siamashka
2014-12-30 10:26         ` Hans de Goede
2014-12-30 10:36           ` Hans de Goede
2014-12-30 11:25             ` Siarhei Siamashka
2014-12-31 11:22               ` Hans de Goede
2014-12-30 12:17           ` Siarhei Siamashka
2014-12-31 11:22             ` Hans de Goede
2015-01-01  2:35               ` Chen-Yu Tsai
2015-01-01 12:36                 ` Hans de Goede
2015-01-02 11:02                   ` Siarhei Siamashka
2015-01-04 20:22                     ` Hans de Goede
2015-01-01 20:03               ` Siarhei Siamashka
2015-01-01 20:15                 ` Hans de Goede [this message]
2015-01-01 21:05                   ` Siarhei Siamashka
2014-12-24 19:06 ` [U-Boot] [PATCH 16/17] sunxi: video: Remove sunxi_display.enabled variable Hans de Goede
2014-12-29 13:57   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 17/17] sunxi: video: Use sunxi_lcdc_get_clk_delay to calculate tcon1 delay Hans de Goede
2014-12-29 13:58   ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54A5AAFE.6020302@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.