Zephyr drivers have typically one log level defined per class. The video
drivers were making exception. This adds the missing log level for video
drivers.
Since all headers had to be modified, this also:
- Update the log initialization to the new syntax from 5e34681
- Sort the #include list to something like #41543
Signed-off-by: Josuah Demangeon <me@josuah.net>
76 lines
1.5 KiB
C
76 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2019, Linaro Limited
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/kernel.h>
|
|
#include <zephyr/drivers/video.h>
|
|
|
|
K_HEAP_DEFINE(video_buffer_pool,
|
|
CONFIG_VIDEO_BUFFER_POOL_SZ_MAX *
|
|
CONFIG_VIDEO_BUFFER_POOL_NUM_MAX);
|
|
|
|
static struct video_buffer video_buf[CONFIG_VIDEO_BUFFER_POOL_NUM_MAX];
|
|
|
|
struct mem_block {
|
|
void *data;
|
|
};
|
|
|
|
static struct mem_block video_block[CONFIG_VIDEO_BUFFER_POOL_NUM_MAX];
|
|
|
|
struct video_buffer *video_buffer_aligned_alloc(size_t size, size_t align)
|
|
{
|
|
struct video_buffer *vbuf = NULL;
|
|
struct mem_block *block;
|
|
int i;
|
|
|
|
/* find available video buffer */
|
|
for (i = 0; i < ARRAY_SIZE(video_buf); i++) {
|
|
if (video_buf[i].buffer == NULL) {
|
|
vbuf = &video_buf[i];
|
|
block = &video_block[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (vbuf == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
/* Alloc buffer memory */
|
|
block->data = k_heap_aligned_alloc(&video_buffer_pool, align, size, K_FOREVER);
|
|
if (block->data == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
vbuf->buffer = block->data;
|
|
vbuf->size = size;
|
|
vbuf->bytesused = 0;
|
|
|
|
return vbuf;
|
|
}
|
|
|
|
struct video_buffer *video_buffer_alloc(size_t size)
|
|
{
|
|
return video_buffer_aligned_alloc(size, sizeof(void *));
|
|
}
|
|
|
|
void video_buffer_release(struct video_buffer *vbuf)
|
|
{
|
|
struct mem_block *block = NULL;
|
|
int i;
|
|
|
|
/* vbuf to block */
|
|
for (i = 0; i < ARRAY_SIZE(video_block); i++) {
|
|
if (video_block[i].data == vbuf->buffer) {
|
|
block = &video_block[i];
|
|
break;
|
|
}
|
|
}
|
|
|
|
vbuf->buffer = NULL;
|
|
if (block) {
|
|
k_heap_free(&video_buffer_pool, block->data);
|
|
}
|
|
}
|