nuttx/arch/arm/src/stm32/stm32_dma2d.h
Alin Jerpelea 72041911ce NuttX: Marco Krahl: update licenses to Apache
Marco Krahl has submitted the ICLA and we can migrate the licenses
 to Apache.

Gregory Nutt, S.A has submitted the SGA and we can migrate the licenses
 to Apache.

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-04-06 12:50:41 -05:00

191 lines
6.2 KiB
C

/****************************************************************************
* arch/arm/src/stm32/stm32_dma2d.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_ARM_SRC_STM32_STM32_DMA2D_H
#define __ARCH_ARM_SRC_STM32_STM32_DMA2D_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/video/fb.h>
#ifdef CONFIG_FB_OVERLAY
/****************************************************************************
* Public Types
****************************************************************************/
/* This structure describes DMA2D overlay information */
struct stm32_dma2d_overlay_s
{
uint8_t fmt; /* DMA2D pixel format */
uint8_t transp_mode; /* DMA2D transparency mode */
fb_coord_t xres; /* X-resolution overlay */
fb_coord_t yres; /* Y-resolution overlay */
FAR struct fb_overlayinfo_s *oinfo; /* Framebuffer overlay information */
};
/* DMA2D is controlled by the following interface */
struct dma2d_layer_s
{
/* Name: setclut
*
* Description:
* Set the cmap table for both foreground and background layer.
* Up to 256 colors supported.
*
* Parameter:
* cmap - Reference to the cmap table
*
* Returned Value:
* On success - OK
* On error - -EINVAL
*/
#ifdef CONFIG_STM32_FB_CMAP
int (*setclut)(FAR const struct fb_cmap_s * cmap);
#endif
/* Name: fillcolor
*
* Description:
* Fill a specific memory region with a color.
* The caller must ensure that the memory region (area) is within the
* entire overlay.
*
* Parameter:
* oinfo - Reference to overlay information
* area - Reference to the area to fill
* argb - argb8888 color
*
* Returned Value:
* On success - OK
* On error - -EINVAL
*/
int (*fillcolor)(FAR struct stm32_dma2d_overlay_s *oinfo,
FAR const struct fb_area_s *area, uint32_t argb);
/* Name: blit
*
* Description:
* Copies memory from a source overlay (defined by sarea) to destination
* overlay position (defined by destxpos and destypos) without
* pixelformat conversion. The caller must ensure that the memory region
* (area) is within the entire overlay.
*
* Parameter:
* doverlay - Reference destination overlay
* destxpos - x-Offset destination overlay
* destypos - y-Offset destination overlay
* soverlay - Reference source overlay
* sarea - Reference source area
*
* Returned Value:
* On success - OK
* On error - -EINVAL
*/
int (*blit)(FAR struct stm32_dma2d_overlay_s *doverlay,
uint32_t destxpos, uint32_t destypos,
FAR struct stm32_dma2d_overlay_s *soverlay,
FAR const struct fb_area_s *sarea);
/* Name: blend
*
* Description:
* Blends two source memory areas to a destination memory area with
* pixelformat conversion if necessary. The caller must ensure that the
* memory region (area) is within the entire overlays.
*
* Parameter:
* doverlay - Destination overlay
* destxpos - x-Offset destination overlay
* destypos - y-Offset destination overlay
* foverlay - Foreground overlay
* forexpos - x-Offset foreground overlay
* foreypos - y-Offset foreground overlay
* boverlay - Background overlay
* barea - x-Offset, y-Offset, x-resolution and y-resolution of
* background overlay
*
* Returned Value:
* On success - OK
* On error - -EINVAL or -ECANCELED
*/
int (*blend)(FAR struct stm32_dma2d_overlay_s *doverlay,
uint32_t destxpos, uint32_t destypos,
FAR struct stm32_dma2d_overlay_s *foverlay,
uint32_t forexpos, uint32_t foreypos,
FAR struct stm32_dma2d_overlay_s *boverlay,
FAR const struct fb_area_s *barea);
};
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: stm32_dma2ddev
*
* Description:
* Get a reference to the DMA2D controller.
*
* Returned Value:
* On success - A valid DMA2D controller reference
* On error - NULL and errno is set to
* -EINVAL if one of the parameter is invalid
*
****************************************************************************/
FAR struct dma2d_layer_s *stm32_dma2ddev(void);
/****************************************************************************
* Name: up_dma2dinitialize
*
* Description:
* Initialize the DMA2D controller
*
* Returned Value:
* OK - On success
* An error if initializing failed.
*
****************************************************************************/
int stm32_dma2dinitialize(void);
/****************************************************************************
* Name: up_dma2duninitialize
*
* Description:
* Uninitialize the DMA2D controller
*
****************************************************************************/
void stm32_dma2duninitialize(void);
#endif /* CONFIG_FB_OVERLAY */
#endif /* __ARCH_ARM_SRC_STM32_STM32_DMA2D_H */