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] video: sunxi: Enable cache for the framebuffer
Date: Mon, 02 Feb 2015 19:56:15 +0100	[thread overview]
Message-ID: <54CFC84F.3070200@redhat.com> (raw)
In-Reply-To: <1422667318-27022-1-git-send-email-siarhei.siamashka@gmail.com>

Hi,

On 31-01-15 02:21, Siarhei Siamashka wrote:
> Because the framebuffer resides in a hidden chopped off part of DRAM,
> caching is not enabled for this area automatically when the MMU is
> configured. So it needs to be set explicitly.
>
> Additionally, the cfb console has a function to check whether the
> framebuffer resides in DRAM or not. And the hidden sunxi framebuffer
> needs special treatment again.
>
> This fix resolves the sluggish scrolling problem.
>
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>

Thanks for figuring this out!

As already discussed it seems that the problem is that using
CONFIG_SYS_MEM_TOP_HIDE seems to be the wrong thing to do.

So I've written a patch with results in the same behavior in a slightly
different way, with as added bonus that we can give back unused memory
to the kernel when booting.

I'll Cc you on the patch-set when I send it.

Regards,

Hans

> ---
>   drivers/video/cfb_console.c   |  2 +-
>   drivers/video/sunxi_display.c | 10 ++++++++++
>   2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
> index a81affa..23b50df 100644
> --- a/drivers/video/cfb_console.c
> +++ b/drivers/video/cfb_console.c
> @@ -2090,7 +2090,7 @@ static void *video_logo(void)
>   }
>   #endif
>
> -static int cfb_fb_is_in_dram(void)
> +__weak int cfb_fb_is_in_dram(void)
>   {
>   	bd_t *bd = gd->bd;
>   #if defined(CONFIG_ARM) || defined(CONFIG_AVR32) || defined(COFNIG_NDS32) || \
> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
> index f5f24fc..22a1319 100644
> --- a/drivers/video/sunxi_display.c
> +++ b/drivers/video/sunxi_display.c
> @@ -1060,6 +1060,12 @@ static const char *sunxi_get_mon_desc(enum sunxi_monitor monitor)
>   	return NULL; /* never reached */
>   }
>
> +/* The framebuffer is in DRAM, even though it is in the hidden part of it */
> +int cfb_fb_is_in_dram(void)
> +{
> +	return 1;
> +}
> +
>   void *video_hw_init(void)
>   {
>   	static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
> @@ -1079,6 +1085,10 @@ void *video_hw_init(void)
>   	       CONFIG_SUNXI_FB_SIZE >> 10);
>   	gd->fb_base = gd->ram_top;
>
> +	mmu_set_region_dcache_behaviour(gd->fb_base,
> +					CONFIG_SUNXI_FB_SIZE,
> +					DCACHE_WRITEBACK);
> +
>   	video_get_ctfb_res_modes(RES_MODE_1024x768, 24, &mode,
>   				 &sunxi_display.depth, &options);
>   #ifdef CONFIG_VIDEO_HDMI
>

      parent reply	other threads:[~2015-02-02 18:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-31  1:21 [U-Boot] [PATCH] video: sunxi: Enable cache for the framebuffer Siarhei Siamashka
2015-01-31 10:34 ` Ian Campbell
2015-01-31 11:46   ` Siarhei Siamashka
2015-02-02 18:56 ` Hans de Goede [this message]

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=54CFC84F.3070200@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.