From: Ian Campbell <ijc@hellion.org.uk>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] video: sunxi: Enable cache for the framebuffer
Date: Sat, 31 Jan 2015 10:34:36 +0000 [thread overview]
Message-ID: <1422700476.13378.9.camel@hellion.org.uk> (raw)
In-Reply-To: <1422667318-27022-1-git-send-email-siarhei.siamashka@gmail.com>
On Sat, 2015-01-31 at 03:21 +0200, 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.
I wonder if this (essentially the need to make cfb_fb_is_in_dram __weak)
suggests that we are not correctly doing this hiding? Or at least not
doing it the same as other platforms which steal DRAM for use as video
ram.
We seem to set pGD->frameAdrs (==VIDEO_FB_ADRS in cfb_console)
correctly, which is one half of cfb_fb_is_in_dram's input. So is the
real issue that we omit the fb from bd->bi_dram instead of including it
there and marking it reserved in another way?
I have a look around some of the other drivers for other platforms and I
must confess I couldn't figure out how this all fits together for
them...
In terms of the kernel interface I'd expect we want to use an FDT
memeserve for the region, i.e. call fdt_add_reservemap_entry at some
suitable place.
Anatolij, how are we supposed to be doing this?
>
> This fix resolves the sluggish scrolling problem.
>
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> ---
> 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
next prev parent reply other threads:[~2015-01-31 10:34 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 [this message]
2015-01-31 11:46 ` Siarhei Siamashka
2015-02-02 18:56 ` Hans de Goede
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=1422700476.13378.9.camel@hellion.org.uk \
--to=ijc@hellion.org.uk \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox