82 lines
2.7 KiB
C

/*
* Copyright 2019 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef _FSL_DC_FB_H_
#define _FSL_DC_FB_H_
#include "fsl_video_common.h"
/*!
* @addtogroup dc_fb
* @{
*/
/*******************************************************************************
* Definitions
******************************************************************************/
/*! @brief frame buffer information. */
typedef struct _dc_fb_info
{
uint16_t startX; /*!< The start position in the panel. */
uint16_t startY; /*!< The start position in the panel. */
uint16_t width; /*!< How many pixels in one line of the frame buffer.*/
uint16_t height; /*!< How many lines in one frame buffer. */
uint16_t strideBytes; /*!< Stride of the frame buffer */
video_pixel_format_t pixelFormat; /*!< Pixel format of the frame buffer */
} dc_fb_info_t;
/*! @brief Display controller frame callback. */
typedef void (*dc_fb_callback_t)(void *param, void *inactiveBuffer);
/*! @brief Display controller. */
typedef struct _dc_fb dc_fb_t;
/*! @brief Display controller operations. */
typedef struct _dc_fb_ops
{
status_t (*init)(const dc_fb_t *dc);
status_t (*deinit)(const dc_fb_t *dc);
status_t (*enableLayer)(const dc_fb_t *dc, uint8_t layer);
status_t (*disableLayer)(const dc_fb_t *dc, uint8_t layer);
status_t (*setLayerConfig)(const dc_fb_t *dc, uint8_t layer, dc_fb_info_t *fbInfo);
status_t (*getLayerDefaultConfig)(const dc_fb_t *dc, uint8_t layer, dc_fb_info_t *fbInfo);
status_t (*setFrameBuffer)(const dc_fb_t *dc, uint8_t layer, void *frameBuffer);
uint32_t (*getProperty)(const dc_fb_t *dc);
void (*setCallback)(const dc_fb_t *dc, uint8_t layer, dc_fb_callback_t callback, void *param);
} dc_fb_ops_t;
/*! @brief Display controller property. */
enum _dc_fb_property
{
kDC_FB_ReserveFrameBuffer = (1 << 0), /*< One frame buffer is always used as the DC active buffer. */
kDC_FB_TwoDimensionMemoryWrite = (1 << 1), /*< Support writing memory to device in two dimension way. */
};
/*! @brief Display controller driver handle. */
struct _dc_fb
{
const dc_fb_ops_t *ops; /* Display controller operations. */
void *prvData; /* Private data for the display controller. */
const void *config; /* Configuration for the display controller. */
};
/*******************************************************************************
* API
******************************************************************************/
#if defined(__cplusplus)
extern "C" {
#endif
#if defined(__cplusplus)
}
#endif
/*! @} */
#endif /* _FSL_DC_FB_H_ */