123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*
- * Copyright 2019 NXP
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #include "vglite_support.h"
- #include "fsl_clock.h"
- #include "vg_lite.h"
- #include "vg_lite_platform.h"
- #include "display_support.h"
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- #define MAX_CONTIGUOUS_SIZE 0x200000
- /*******************************************************************************
- * Prototypes
- ******************************************************************************/
- /*******************************************************************************
- * Variables
- ******************************************************************************/
- static uint32_t registerMemBase = 0x41800000;
- static uint32_t gpu_mem_base = 0x0;
- /*
- * In case custom VGLite memory parameters are used, the application needs to
- * allocate and publish the VGLite heap base, its size and the size of the
- * command buffer(s) using the following global variables:
- */
- extern void *vglite_heap_base;
- extern uint32_t vglite_heap_size;
- #if (CUSTOM_VGLITE_MEMORY_CONFIG == 0)
- /* VGLite driver heap */
- AT_NONCACHEABLE_SECTION_ALIGN(static uint8_t contiguous_mem[MAX_CONTIGUOUS_SIZE], FRAME_BUFFER_ALIGN);
- void *vglite_heap_base = &contiguous_mem;
- uint32_t vglite_heap_size = MAX_CONTIGUOUS_SIZE;
- #endif /* CUSTOM_VGLITE_MEMORY_CONFIG */
- /*******************************************************************************
- * Code
- ******************************************************************************/
- void GPU2D_IRQHandler(void)
- {
- vg_lite_IRQHandler();
- }
- static status_t BOARD_InitVGliteClock(void)
- {
- const clock_root_config_t gc355ClockConfig = {
- .clockOff = false,
- .mux = kCLOCK_GC355_ClockRoot_MuxVideoPllOut, /*!< 984MHz */
- .div = 2,
- };
- CLOCK_SetRootClock(kCLOCK_Root_Gc355, &gc355ClockConfig);
- CLOCK_GetRootClockFreq(kCLOCK_Root_Gc355);
- CLOCK_EnableClock(kCLOCK_Gpu2d);
- NVIC_SetPriority(GPU2D_IRQn, 3);
- EnableIRQ(GPU2D_IRQn);
- return kStatus_Success;
- }
- status_t BOARD_PrepareVGLiteController(void)
- {
- status_t status;
- status = BOARD_InitVGliteClock();
- if (kStatus_Success != status)
- {
- return status;
- }
- vg_lite_init_mem(registerMemBase, gpu_mem_base, vglite_heap_base, vglite_heap_size);
- return kStatus_Success;
- }
|