gpu: gpu@fb000000 {
compatible = "arm,mali-bifrost";
reg = <0x0 0xfb000000 0x0 0x200000>;
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "GPU", "MMU", "JOB";
clocks = <&scmi_clk SCMI_CLK_GPU>, <&cru CLK_GPU_COREGROUP>,
<&cru CLK_GPU_STACKS>, <&cru CLK_GPU>;
clock-names = "clk_mali", "clk_gpu_coregroup",
"clk_gpu_stacks", "clk_gpu";
assigned-clocks = <&scmi_clk SCMI_CLK_GPU>;
assigned-clock-rates = <200000000>;
power-domains = <&power RK3588_PD_GPU>;
operating-points-v2 = <&gpu_opp_table>;
#cooling-cells = <2>;
dynamic-power-coefficient = <2982>;
upthreshold = <30>;
downdifferential = <10>;
status = "disabled";
};
顶层属性
- gpu: gpu@fb000000: 定义了一个GPU设备节点,地址为
0xfb000000
。 - compatible: 表示这个设备与"arm,mali-bifrost"兼容,即使用ARM的Mali Bifrost GPU架构。
- reg: 定义了设备的寄存器地址范围,起始地址为
0xfb000000
,长度为0x200000
。
中断配置
- interrupts: 定义了三个中断:
GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
: GPU中断。GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH
: MMU(内存管理单元)中断。GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH
: JOB中断。
- 在GPU(图形处理单元)相关的上下文中,JOB 通常指的是一个作业或任务,这些作业或任务需要GPU来处理。例如,在图形渲染、计算等过程中,GPU会被分配一系列的任务或作业,这些作业需要按照一定的顺序和依赖关系执行。JOB中断: 这个中断通常用于通知CPU,GPU已经完成了某个作业或任务。这可能包括渲染完成、计算完成等情况。GPU驱动程序会处理这些中断,确认作业的完成情况,并可能触发进一步的动作,例如释放资源、启动下一个作业等。
- interrupt-names: 对应中断的名称。
时钟配置
- clocks: 定义了与GPU相关的时钟:
&scmi_clk SCMI_CLK_GPU
: 使用SCMI协议的GPU时钟。&cru CLK_GPU_COREGROUP
: GPU核心组时钟。&cru CLK_GPU_STACKS
: GPU堆栈时钟。&cru CLK_GPU
: GPU通用时钟。
- clock-names: 对应时钟的名称。
- assigned-clocks: 指定了分配的时钟。
- assigned-clock-rates: 指定了分配的时钟频率(200MHz)。
电源域
- power-domains: 定义了GPU的电源域,使用
RK3588_PD_GPU
。
操作性能点
- operating-points-v2: 引用了之前定义的
gpu_opp_table
,用于定义GPU的操作性能点。
散热冷却
- #cooling-cells: 定义了冷却单元的数量,值为2。
动态功耗系数
- dynamic-power-coefficient: 定义了动态功耗系数,值为2982。
GPU调速器配置
- upthreshold: 定义了上升阈值,值为30。
- downdifferential: 定义了下降差值,值为10。
状态
- status: 定义了设备的状态,"disabled"表示设备当前被禁用。