diff --git a/arch/arm/src/stm32/stm32_ltdc.h b/arch/arm/src/stm32/stm32_ltdc.h index 007f03b521..4b2fb628e2 100644 --- a/arch/arm/src/stm32/stm32_ltdc.h +++ b/arch/arm/src/stm32/stm32_ltdc.h @@ -1,8 +1,9 @@ /************************************************************************************ * arch/arm/src/stm32/stm32_ltdc.h * - * Copyright (C) 2013 Ken Pettit. All rights reserved. - * Author: Ken Pettit + * Copyright (C) 2013-2014 Ken Pettit. All rights reserved. + * Authors: Ken Pettit + * Marco Krahl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -41,15 +42,13 @@ ************************************************************************************/ #include - #include - +#include +#include +#include #include -#include "chip/stm32_ltdc.h" - #ifdef CONFIG_STM32_LTDC - /************************************************************************************ * Pre-processor Definitions ************************************************************************************/ @@ -58,6 +57,40 @@ * Public Types ************************************************************************************/ +/* Common layer state structure for the LTDC and DMA2D controller */ + +struct stm32_ltdc_s +{ + /* Fixed settings */ + + int lid; /* Layer identifier */ + struct fb_videoinfo_s vinfo; /* Layer videoinfo */ + struct fb_planeinfo_s pinfo; /* Layer planeinfo */ + + /* Positioning */ + + struct ltdc_area_s area; /* Active layer area */ + fb_coord_t xpos; /* Reference x position */ + fb_coord_t ypos; /* Reference y position */ + + /* Coloring */ + + uint32_t color; /* Layer color definition */ +#ifdef CONFIG_FB_CMAP + struct fb_cmap_s *cmap; /* Reference to the valid color lookup table */ +#endif + + /* Blending */ + + uint8_t alpha; /* Layer constant alpha value */ + uint32_t colorkey; /* Layer colorkey */ + uint32_t blendmode; /* Layer blend factor */ + + /* Operation */ + + sem_t *lock; /* Ensure mutually exclusive access */ +}; + /************************************************************************************ * Public Data ************************************************************************************/ @@ -65,18 +98,40 @@ /************************************************************************************ * Public Functions ************************************************************************************/ -/* The STM32 LTDC driver uses the common framebuffer interfaces declared in +/* + * The STM32 LTDC driver uses the common framebuffer interfaces declared in * include/nuttx/video/fb.h. */ +int stm32_ltdcinitialize(void); +FAR struct fb_vtable_s *stm32_ltdcgetvplane(int vplane); +void stm32_ltdcuninitialize(void); + +/************************************************************************************ + * Name: stm32_ltdcgetlayer + * + * Description: + * Get the ltdc layer structure to perform hardware layer operation + * + * Parameter: + * lid - Layer identifier + * + * Return: + * Reference to the layer control structure on success or Null if parameter + * invalid. + * + ************************************************************************************/ + +FAR struct ltdc_layer_s *stm32_ltdcgetlayer(int lid); + /************************************************************************************ * Name: stm32_lcdclear * * Description: - * This is a non-standard LCD interface just for the STM32. Clearing the display - * in the normal way by writing a sequences of runs that covers the entire display - * can be slow. Here the display is cleared by simply setting all buffer memory to - * the specified color. + * This is a non-standard LCD interface just for the STM32 LTDC. Clearing the + * display in the normal way by writing a sequences of runs that covers the + * entire display can be slow. Here the display is cleared by simply setting + * all video memory to the specified color. * ************************************************************************************/ @@ -91,8 +146,8 @@ void stm32_lcdclear(nxgl_mxpixel_t color); * ************************************************************************************/ -#ifdef CONFIG_STM_LCD_BACKLIGHT -void sam_lcd_backlight(bool blon); +#ifdef CONFIG_STM32_LCD_BACKLIGHT +void stm32_backlight(bool blon); #endif #endif /* CONFIG_STM32_LTDC */