SAMA5 LCDC: Move framebuffer to lower memory; I suspect some corruption by interference

This commit is contained in:
Gregory Nutt 2013-10-13 10:42:14 -06:00
parent 34557b8c6b
commit a3bb8d3d94

View File

@ -905,8 +905,8 @@ static const uint8_t g_hcrfb[SAMA5_HCR_FBSIZE];
/* Preallocated LCDC layer structures */ /* Preallocated LCDC layer structures */
#if (CONFIG_SAMA5_LCDC_FBFIXED_BASE & 0x3f) != 0 #if (CONFIG_SAMA5_LCDC_FBFIXED_BASE & 7) != 0
# error "CONFIG_SAMA5_LCDC_FBFIXED_BASE must be aligned to a 64-byte boundary" # error "CONFIG_SAMA5_LCDC_FBFIXED_BASE must be aligned to a 64-bit boundary"
#endif #endif
/* Base layer */ /* Base layer */
@ -2081,7 +2081,7 @@ static void sam_layer_color(void)
LAYER_BASE->bpp = 16; LAYER_BASE->bpp = 16;
sam_putreg(SAM_LCDC_BASECFG0, sam_putreg(SAM_LCDC_BASECFG0,
LCDC_BASECFG0_DLBO | LCDC_BASECFG0_BLEN_INCR4); LCDC_BASECFG0_DLBO | LCDC_BASECFG0_BLEN_INCR16);
sam_putreg(SAM_LCDC_BASECFG1, sam_putreg(SAM_LCDC_BASECFG1,
LCDC_BASECFG1_16BPP_RGB565); LCDC_BASECFG1_16BPP_RGB565);
@ -2096,7 +2096,7 @@ static void sam_layer_color(void)
LAYER_OVR1->bpp = 24; LAYER_OVR1->bpp = 24;
sam_putreg(SAM_LCDC_OVR1CFG0, sam_putreg(SAM_LCDC_OVR1CFG0,
LCDC_OVR1CFG0_DLBO | LCDC_OVR1CFG0_BLEN_INCR16 | LCDC_OVR1CFG0_DLBO | LCDC_BASECFG0_BLEN_INCR16 |
LCDC_OVR1CFG0_ROTDIS); LCDC_OVR1CFG0_ROTDIS);
sam_putreg(SAM_LCDC_OVR1CFG1, sam_putreg(SAM_LCDC_OVR1CFG1,
LCDC_OVR1CFG1_24BPP_RGB888P); LCDC_OVR1CFG1_24BPP_RGB888P);
@ -2107,7 +2107,7 @@ static void sam_layer_color(void)
LAYER_OVR1->bpp = 16; LAYER_OVR1->bpp = 16;
sam_putreg(SAM_LCDC_OVR1CFG0, sam_putreg(SAM_LCDC_OVR1CFG0,
LCDC_OVR1CFG0_DLBO | LCDC_OVR1CFG0_BLEN_INCR4 | LCDC_OVR1CFG0_DLBO | LCDC_BASECFG0_BLEN_INCR16 |
LCDC_OVR1CFG0_ROTDIS); LCDC_OVR1CFG0_ROTDIS);
sam_putreg(SAM_LCDC_OVR1CFG1, sam_putreg(SAM_LCDC_OVR1CFG1,
LCDC_OVR1CFG1_16BPP_RGB565); LCDC_OVR1CFG1_16BPP_RGB565);
@ -2126,7 +2126,7 @@ static void sam_layer_color(void)
LAYER_OVR2->bpp = 24; LAYER_OVR2->bpp = 24;
sam_putreg(SAM_LCDC_OVR2CFG0, sam_putreg(SAM_LCDC_OVR2CFG0,
LCDC_OVR2CFG0_DLBO | LCDC_OVR2CFG0_BLEN_INCR16 | LCDC_OVR2CFG0_DLBO | LCDC_BASECFG0_BLEN_INCR16 |
LCDC_OVR2CFG0_ROTDIS; LCDC_OVR2CFG0_ROTDIS;
sam_putreg(SAM_LCDC_OVR2CFG1, sam_putreg(SAM_LCDC_OVR2CFG1,
LCDC_OVR2CFG1_24BPP_RGB888P); LCDC_OVR2CFG1_24BPP_RGB888P);
@ -2137,7 +2137,7 @@ static void sam_layer_color(void)
LAYER_OVR2->bpp = 16; LAYER_OVR2->bpp = 16;
sam_putreg(SAM_LCDC_OVR2CFG0, sam_putreg(SAM_LCDC_OVR2CFG0,
LCDC_OVR2CFG0_DLBO | LCDC_OVR2CFG0_BLEN_INCR4 | LCDC_OVR2CFG0_DLBO | LCDC_BASECFG0_BLEN_INCR16 |
LCDC_OVR2CFG0_ROTDIS); LCDC_OVR2CFG0_ROTDIS);
sam_putreg(SAM_LCDC_OVR2CFG1, sam_putreg(SAM_LCDC_OVR2CFG1,
LCDC_OVR2CFG1_16BPP_RGB565); LCDC_OVR2CFG1_16BPP_RGB565);
@ -2167,7 +2167,7 @@ static void sam_layer_color(void)
LAYER_HEO->bpp = 16; LAYER_HEO->bpp = 16;
sam_putreg(SAM_LCDC_HEOCFG0, sam_putreg(SAM_LCDC_HEOCFG0,
LCDC_HEOCFG0_DLBO | LCDC_HEOCFG0_BLEN_INCR4 | LCDC_HEOCFG0_DLBO | LCDC_HEOCFG0_BLEN_INCR16 |
LCDC_HEOCFG0_ROTDIS); LCDC_HEOCFG0_ROTDIS);
sam_putreg(SAM_LCDC_HEOCFG1, sam_putreg(SAM_LCDC_HEOCFG1,
LCDC_HEOCFG1_16BPP_RGB565); LCDC_HEOCFG1_16BPP_RGB565);
@ -2200,7 +2200,7 @@ static void sam_layer_color(void)
LAYER_HCR->bpp = 16; LAYER_HCR->bpp = 16;
sam_putreg(SAM_LCDC_HCRCFG0, sam_putreg(SAM_LCDC_HCRCFG0,
LCDC_HCRCFG0_DLBO | LCDC_HCRCFG0_BLEN_INCR4 | LCDC_HCRCFG0_DLBO | LCDC_HCRCFG0_BLEN_INCR16 |
LCDC_HCRCFG0_ROTDIS); LCDC_HCRCFG0_ROTDIS);
sam_putreg(SAM_LCDC_HCRCFG1, sam_putreg(SAM_LCDC_HCRCFG1,
LCDC_HCRCFG1_16BPP_RGB565); LCDC_HCRCFG1_16BPP_RGB565);
@ -3080,12 +3080,11 @@ static void sam_show_layer(struct sam_layer_s *layer,
if (buffer) if (buffer)
{ {
regaddr = g_layerblend[lid]; regaddr = g_layerblend[lid];
regval = sam_getreg(regaddr); regval = sam_getreg(regaddr);
regval |= LCDC_HEOCFG12_DMA | LCDC_HEOCFG12_OVR; regval |= LCDC_HEOCFG12_DMA | LCDC_HEOCFG12_OVR;
sam_putreg(regaddr, regval); sam_putreg(regaddr, regval);
} }
/* Enable and Update */
/* 5. Enable the relevant channel by writing one to the CHEN field of the /* 5. Enable the relevant channel by writing one to the CHEN field of the
* CHXCHER register. * CHXCHER register.
*/ */