V2D
介绍spacemit平台V2D模块的功能和使用方法。
模块介绍
spacemit平台 V2D 驱动提供 2D 图形的硬件加速。
功能介绍
驱动模型 V2D 驱动使用字符设备驱动模型,通过/dev/v2d_dev设备文件与用户空间进行交付。
open:
设备打开时调用的函数。
read:
从设备读取数据的函数。
write():
向设备写入数据的函数。
ioctl():
处理控制命令的函数。
release():
设备关闭时调用的函数。
基本功能 V2D驱动支持 2D 图形填充,缩放,旋转,裁剪,格式转换等功能。
源码结构介绍
spacemit平台V2D驱动源码结构,内核目录下:
drivers/soc/spacemit$ tree v2d
v2d
|-- csc_matrix.h
|-- Kconfig
|-- Makefile
|-- v2d_drv.c // v2d 驱动
|-- v2d_drv.h
|-- v2d_hw.c
|-- v2d_iommu.c // v2d iommu 驱动
|-- v2d_priv.h
|-- v2d_reg.h
关键特性
特性
特性 | 特性说明 |
---|---|
颜色填充 | 支持图像颜色填充功能。 |
旋转 | 支持图像0°,90°,180°,270°旋转,及镜像功能。 |
裁剪 | 支持图像裁剪功能。 |
缩放 | 支持图像1/8~8倍的缩放功能功能。 |
格式转换 | 支持YUV,RGB颜色空间转换功能。 |
性能参数
功能 | 性能规格 |
---|---|
颜色填充 | 1920x1080@200 FPS |
格式转换 | 1920x1080@200 FPS |
配置介绍
主要包括V2D驱动使能配置和dts配置。
CONFIG配置
CONFIG_SPACEMIT_V2D:spacemit平台V2D驱动配置选项,默认情况,此选项为Y。
Device Drivers --->
SOC (System On Chip) specific Drivers --->
<*> Spacemit V2D Engine Driver
dts配置
clock配置
V2D相关clock配置,包括v2d-io 和 v2d-core clock配置,reset配置。v2d-io clock可配置为204800000 HZ,307200000 HZ,409600000 HZ,409600000 HZ四个不同挡位。默认使用409600000 HZ,可通过写节点/sys/bus/platform/devices/c0100000.v2d/clkrate进行动态配置。
配置平台V2D相关clock和reset。
// linux-6.6\arch\riscv\boot\dts\spacemit\k1-x.dtsi
v2d@c0100000 {
compatible = "spacemit,v2d";
reg = <0x0 0xc0100000 0x0 0x1000>;
reg-names = "v2dreg";
clocks = <&ccu CLK_DPU_MCLK>, // v2d clock 配置
<&ccu CLK_V2D>;
clock-names = "v2d-io", "v2d-core";
resets = <&reset RESET_V2D>; // v2d reset 配置
reset-names= "v2d_reset";
interrupt-parent = <&intc>;
interrupts = <86>;
interconnects = <&dram_range3>;
interconnect-names = "dma-mem";
status = "ok";
};