[FPGA Video IP] Gamma LUT

Xilinx Gamma LUT IP (PG285) 详细介绍

概述

Xilinx LogiCORE™ IP Gamma LUT(查找表)核(PG285)是一个优化的硬件模块,用于处理图像数据以匹配显示设备的非线性响应特性。它通过查找表(LUT)结构实现伽马校正或用户定义的变换函数,支持对输入图像数据进行精确的亮度和颜色调整。该 IP 核替代了早期版本的 Gamma Correction IP(PG004),最大支持10位每通道数据,适用于视频和图像处理系统。Gamma LUT IP 核通过 AXI4-Stream 接口输入和输出视频流,并通过 AXI4-Lite 接口进行配置,广泛应用于多种 AMD FPGA 系列。

主要特性

  • 接口
    • 输入/输出:AXI4-Stream 视频协议(符合 Vivado AXI Reference Guide UG1037),用于视频数据传输。
    • 控制:AXI4-Lite 接口,用于配置 LUT 和控制参数。
  • 数据宽度
    • 支持 8 位或 10 位每通道输入/输出。
    • 支持多种颜色格式(如 RGB、YUV 4:4:4)。
  • 查找表(LUT)结构
    • 支持单通道、双通道或三通道独立 LUT,或者共享 LUT 以减少资源占用。
    • 可编程伽马表,支持伽马校正或用户定义的非线性变换函数。
    • LUT 大小:256 条目(8 位)或 1024 条目(10 位)。
  • 颜色通道
    • 支持 1、2 或 3 个颜色通道独立处理,或所有通道共享一个 LUT。
  • 分辨率与帧率
    • 支持从低分辨率(如 VGA 640x480)到高分辨率(如 4K@30Hz)。
    • 最大像素时钟频率因设备而异(参考 PG285 性能数据)。
  • 设备支持
    • 兼容 Artix-7、Kintex-7、Virtex-7、Zynq-7000、UltraScale、UltraScale+ 等。
  • 设计工具
    • 支持 Vivado Design Suite。
  • 性能
    • 优化硬件设计,低资源占用。
    • 支持实时视频处理(如 1080p60)。
  • 其他特性
    • 支持动态 LUT 更新,通过 AXI4-Lite 接口运行时重新编程。
    • 提供中断支持,用于监控关键事件(如 LUT 更新完成)。
    • 免费许可,包含在 Vivado 工具中。

应用场景

  1. 视频显示校正

    • 用于校正显示设备的非线性亮度响应(如 LCD、LED 屏幕),确保图像颜色和亮度准确。
    • 常用于消费电子产品(如电视、投影仪)。
  2. 图像传感器处理

    • 在摄像头或图像传感器系统中,对原始图像数据进行伽马校正,补偿传感器和显示设备之间的非线性特性。
    • 适用于监控系统、医疗影像设备。
  3. 嵌入式视频系统

    • 在 Zynq-7000 或 Zynq UltraScale+ MPSoC 平台上,作为视频处理流水线的一部分,调整视频流以匹配 HDMI 或 DisplayPort 输出。
    • 适用于数字标牌、机顶盒。
  4. 广播和专业视频设备

    • 在视频编码器、切换器或广播设备中,应用伽马校正以符合行业标准(如 BT.709、BT.2020)。
    • 支持高分辨率视频(如 4K)。
  5. 实时视频处理

    • 在低延迟场景(如无人机视频传输、汽车辅助驾驶系统)中,调整视频亮度和对比度以提高视觉效果。
    • 支持动态 LUT 更新以适应不同显示条件。
  6. 图像处理与测试

    • 在视频系统开发中,结合测试图案生成器(TPG),验证视频处理流水线的伽马校正效果。
    • 适用于 FPGA 原型设计和硬件验证。

使用指南

设计流程

  1. IP 配置

    • 在 Vivado IP Integrator 中添加 Gamma LUT IP 核。
    • 配置输入/输出数据宽度(8 位或 10 位每通道)。
    • 选择颜色通道模式(1、2、3 通道独立 LUT 或共享 LUT)。
    • 设置伽马表参数(如伽马值或自定义曲线),或使用默认伽马校正曲线。
    • 配置 AXI4-Lite 接口(用于动态 LUT 更新)和中断支持。
  2. 视频流水线集成

    • 将 Gamma LUT 的 AXI4-Stream 输入连接到视频源(如 TPG、Video In to AXI4-Stream)。
    • 将 AXI4-Stream 输出连接到下游模块(如 AXI4-Stream to Video Out、颜色转换器)。
    • 搭配 Video Timing Controller (VTC) IP 提供时序信号(如 Vsync、Hsync)。
  3. 时钟管理

    • 使用时钟向导(Clocking Wizard)生成像素时钟和 AXI4-Lite 控制时钟。
    • 确保像素时钟频率支持目标分辨率和帧率(如 1080p60 需要 148.5 MHz)。
    • 注意 AXI4-Stream 和 AXI4-Lite 接口的时钟域隔离。
  4. 控制与软件开发

    • 通过 AXI4-Lite 接口使用处理器(如 Zynq PS 或 MicroBlaze)配置 LUT 表和控制参数。
    • 使用 Xilinx 提供的驱动程序(位于 Vitis 嵌入式软件库)简化 LUT 更新。
    • 支持运行时动态更新 LUT,以适应不同显示设备或环境光条件。
  5. 验证与调试

    • 使用 Vivado 仿真工具验证 AXI4-Stream 输入/输出信号(TValid、TReady、TData)和伽马校正效果。
    • 检查状态寄存器(如 LUT 更新状态、错误状态)以诊断问题。
    • 使用 Vivado ILA 监控硬件中的视频流和控制信号。

示例设计

以下是一个典型的视频处理设计:

  • 模块
    • TPG IP 生成 AXI4-Stream 视频流(1080p60,RGB)。
    • Gamma LUT IP 应用伽马校正(例如,伽马值 2.2)。
    • AXI4-Stream to Video Out IP 转换为并行视频信号。
    • VTC IP 提供时序信号,HDMI TX 输出到显示器。
  • 控制
    • Zynq PS 通过 AXI4-Lite 配置 Gamma LUT(动态更新伽马表)。
    • 启用中断以监控 LUT 更新完成。
  • 时钟
    • 时钟向导生成 148.5 MHz 像素时钟和 100 MHz AXI4-Lite 时钟。

使用注意事项

  1. 数据宽度限制

    • Gamma LUT IP 最大支持 10 位每通道,不支持 12 位(如早期 PG004)。若需 12 位支持,需联系 AMD FAE 或定制 IP。
    • 确保输入/输出数据宽度与视频格式匹配(如 RGB 24 位需要 8 位每通道)。
  2. 伽马表配置

    • 正确配置伽马表以匹配目标显示设备的响应曲线(如伽马 2.2 用于 sRGB)。
    • 动态更新 LUT 时,确保更新过程与视频流同步,避免画面闪烁。
  3. AXI4-Stream 协议合规性

    • 确保输入/输出信号(TValid、TReady、TData、TUser、TLast)符合 AXI4-Stream 视频协议。
    • 若上游/下游模块不支持 TUser 信号,使用 AXI4-Stream Subset Converter IP 进行转换。
  4. 时钟与带宽

    • 确保像素时钟频率支持目标分辨率和帧率。高分辨率(如 4K)需要更高频率和更高性能 FPGA。
    • 验证 AXI4-Stream 接口的带宽,避免数据瓶颈。
  5. 资源优化

    • 共享 LUT 模式可显著减少 LUT 存储需求,但限制了通道独立性。选择合适的 LUT 配置以平衡资源和功能。
    • 参考 PG285 的资源利用率数据,选择合适的 FPGA 设备。
  6. 中断管理

    • 启用中断以监控 LUT 更新完成或错误事件。
    • 确保中断处理程序及时响应,避免丢失关键事件。
  7. 仿真与验证

    • 在设计初期进行充分仿真,验证伽马校正效果和 AXI4-Stream 信号时序。
    • 使用 Vivado ILA 或外部逻辑分析仪监控硬件中的视频流。
  8. 与显示设备兼容性

    • 确保伽马校正曲线与目标显示设备的特性匹配(如 BT.709、BT.2020)。
    • 验证下游模块和显示设备是否支持校正后的视频格式。

常见问题与解决方法

  1. 问题:伽马校正后图像颜色异常。

    • 原因:伽马表配置错误或颜色格式不匹配。
    • 解决:检查 LUT 配置,验证输入/输出颜色格式(如 RGB 或 YUV)。
  2. 问题:动态更新 LUT 时画面闪烁。

    • 原因:LUT 更新与视频流不同步。
    • 解决:确保 LUT 更新在帧边界进行,使用 Vsync 信号同步。
  3. 问题:高分辨率视频性能不足。

    • 原因:像素时钟频率不足或 FPGA 性能限制。
    • 解决:选择高性能设备(如 UltraScale+),优化时钟频率。
  4. 问题:AXI4-Stream 输出无数据(TValid 信号低)。

    • 原因:输入流未正确生成,或 TReady 信号未置位。
    • 解决:检查上游模块输出,验证下游模块的 TReady 行为。

结论

Xilinx Gamma LUT IP (PG285) 是一个高效的视频处理模块,通过可编程查找表实现伽马校正和用户定义的图像变换,适用于显示校正、图像传感器处理和嵌入式视频系统。其支持 10 位每通道、动态 LUT 更新和多种颜色格式,结合 AXI4-Stream 和 AXI4-Lite 接口,提供了灵活性和实时性。使用时需特别注意数据宽度、伽马表配置、AXI4-Stream 协议合规性和时钟管理,以确保系统性能和图像质量。免费许可和 Vivado 集成使其易于开发和部署。

FPGA设计工具推荐

  • SZ901
    SZ901 是一款基于XVC协议的FPGA网络下载器。
    • 最高支持53M
    • 支持4路JTAG独立使用
    • 支持端口合并
    • 支持国产FLASH烧写
    • 下载器无限扩展
    • 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
/dts-v1/; / { compatible = "xlnx,zynqmp"; #address-cells = <0x2>; #size-cells = <0x2>; cpus { #address-cells = <0x1>; #size-cells = <0x0>; cpu@0 { compatible = "arm,cortex-a53"; device_type = "cpu"; enable-method = "psci"; operating-points-v2 = <0x1>; reg = <0x0>; cpu-idle-states = <0x2>; clocks = <0x3 0xa>; phandle = <0x3a>; }; cpu@1 { compatible = "arm,cortex-a53"; device_type = "cpu"; enable-method = "psci"; reg = <0x1>; operating-points-v2 = <0x1>; cpu-idle-states = <0x2>; phandle = <0x3b>; }; cpu@2 { compatible = "arm,cortex-a53"; device_type = "cpu"; enable-method = "psci"; reg = <0x2>; operating-points-v2 = <0x1>; cpu-idle-states = <0x2>; phandle = <0x3c>; }; cpu@3 { compatible = "arm,cortex-a53"; device_type = "cpu"; enable-method = "psci"; reg = <0x3>; operating-points-v2 = <0x1>; cpu-idle-states = <0x2>; phandle = <0x3d>; }; idle-states { entry-method = "psci"; cpu-sleep-0 { compatible = "arm,idle-state"; arm,psci-suspend-param = <0x40000000>; local-timer-stop; entry-latency-us = <0x12c>; exit-latency-us = <0x258>; min-residency-us = <0x2710>; phandle = <0x2>; }; }; }; opp-table-cpu { compatible = "operating-points-v2"; opp-shared; phandle = <0x1>; opp00 { opp-hz = <0x0 0x4f7704c9>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp01 { opp-hz = <0x0 0x27bb8264>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp02 { opp-hz = <0x0 0x1a7d0198>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp03 { opp-hz = <0x0 0x13ddc132>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; }; zynqmp_ipi { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-ipi-mailbox"; interrupt-parent = <0x4>; interrupts = <0x0 0x23 0x4>; xlnx,ipi-id = <0x0>; #address-cells = <0x2>; #size-cells = <0x2>; ranges; phandle = <0x3e>; mailbox@ff990400 { u-boot,dm-pre-reloc; reg = <0x0 0xff9905c0 0x0 0x20 0x0 0xff9905e0 0x0 0x20 0x0 0xff990e80 0x0 0x20 0x0 0xff990ea0 0x0 0x20>; reg-names = "local_request_region", "local_response_region", "remote_request_region", "remote_response_region"; #mbox-cells = <0x1>; xlnx,ipi-id = <0x4>; phandle = <0x5>; }; }; dcc { compatible = "arm,dcc"; status = "disabled"; u-boot,dm-pre-reloc; phandle = <0x3f>; }; pmu { compatible = "arm,armv8-pmuv3"; interrupt-parent = <0x4>; interrupts = <0x0 0x8f 0x4 0x0 0x90 0x4 0x0 0x91 0x4 0x0 0x92 0x4>; }; psci { compatible = "arm,psci-0.2"; method = "smc"; }; firmware { zynqmp-firmware { compatible = "xlnx,zynqmp-firmware"; u-boot,dm-pre-reloc; method = "smc"; #power-domain-cells = <0x1>; phandle = <0xc>; zynqmp-power { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-power"; interrupt-parent = <0x4>; interrupts = <0x0 0x23 0x4>; mboxes = <0x5 0x0 0x5 0x1>; mbox-names = "tx", "rx"; phandle = <0x40>; }; nvmem_firmware { compatible = "xlnx,zynqmp-nvmem-fw"; #address-cells = <0x1>; #size-cells = <0x1>; soc_revision@0 { reg = <0x0 0x4>; phandle = <0x41>; }; efuse_dna@c { reg = <0xc 0xc>; phandle = <0x42>; }; efuse_usr0@20 { reg = <0x20 0x4>; phandle = <0x43>; }; efuse_usr1@24 { reg = <0x24 0x4>; phandle = <0x44>; }; efuse_usr2@28 { reg = <0x28 0x4>; phandle = <0x45>; }; efuse_usr3@2c { reg = <0x2c 0x4>; phandle = <0x46>; }; efuse_usr4@30 { reg = <0x30 0x4>; phandle = <0x47>; }; efuse_usr5@34 { reg = <0x34 0x4>; phandle = <0x48>; }; efuse_usr6@38 { reg = <0x38 0x4>; phandle = <0x49>; }; efuse_usr7@3c { reg = <0x3c 0x4>; phandle = <0x4a>; }; efuse_miscusr@40 { reg = <0x40 0x4>; phandle = <0x4b>; }; efuse_chash@50 { reg = <0x50 0x4>; phandle = <0x4c>; }; efuse_pufmisc@54 { reg = <0x54 0x4>; phandle = <0x4d>; }; efuse_sec@58 { reg = <0x58 0x4>; phandle = <0x4e>; }; efuse_spkid@5c { reg = <0x5c 0x4>; phandle = <0x4f>; }; efuse_ppk0hash@a0 { reg = <0xa0 0x30>; phandle = <0x50>; }; efuse_ppk1hash@d0 { reg = <0xd0 0x30>; phandle = <0x51>; }; }; pcap { compatible = "xlnx,zynqmp-pcap-fpga"; clock-names = "ref_clk"; clocks = <0x3 0x29>; phandle = <0xb>; }; zynqmp-aes { compatible = "xlnx,zynqmp-aes"; phandle = <0x52>; }; reset-controller { compatible = "xlnx,zynqmp-reset"; #reset-cells = <0x1>; phandle = <0xe>; }; pinctrl { compatible = "xlnx,zynqmp-pinctrl"; status = "disabled"; phandle = <0x53>; }; sha384 { compatible = "xlnx,zynqmp-keccak-384"; phandle = <0x54>; }; zynqmp-rsa { compatible = "xlnx,zynqmp-rsa"; phandle = <0x55>; }; gpio { compatible = "xlnx,zynqmp-gpio-modepin"; gpio-controller; #gpio-cells = <0x2>; phandle = <0x16>; }; clock-controller { u-boot,dm-pre-reloc; #clock-cells = <0x1>; compatible = "xlnx,zynqmp-clk"; clocks = <0x6 0x7 0x8 0x9 0xa>; clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk", "aux_ref_clk", "gt_crx_ref_clk"; phandle = <0x3>; }; }; }; timer { compatible = "arm,armv8-timer"; interrupt-parent = <0x4>; interrupts = <0x1 0xd 0xf08 0x1 0xe 0xf08 0x1 0xb 0xf08 0x1 0xa 0xf08>; }; edac { compatible = "arm,cortex-a53-edac"; }; fpga-full { compatible = "fpga-region"; fpga-mgr = <0xb>; #address-cells = <0x2>; #size-cells = <0x2>; ranges; phandle = <0x56>; }; axi { compatible = "simple-bus"; u-boot,dm-pre-reloc; #address-cells = <0x2>; #size-cells = <0x2>; ranges; phandle = <0x57>; can@ff060000 { compatible = "xlnx,zynq-can-1.0"; status = "disabled"; clock-names = "can_clk", "pclk"; reg = <0x0 0xff060000 0x0 0x1000>; interrupts = <0x0 0x17 0x4>; interrupt-parent = <0x4>; tx-fifo-depth = <0x40>; rx-fifo-depth = <0x40>; power-domains = <0xc 0x2f>; clocks = <0x3 0x3f 0x3 0x1f>; phandle = <0x58>; }; can@ff070000 { compatible = "xlnx,zynq-can-1.0"; status = "okay"; clock-names = "can_clk", "pclk"; reg = <0x0 0xff070000 0x0 0x1000>; interrupts = <0x0 0x18 0x4>; interrupt-parent = <0x4>; tx-fifo-depth = <0x40>; rx-fifo-depth = <0x40>; power-domains = <0xc 0x30>; clocks = <0x3 0x40 0x3 0x1f>; phandle = <0x59>; }; cci@fd6e0000 { compatible = "arm,cci-400"; status = "okay"; reg = <0x0 0xfd6e0000 0x0 0x9000>; ranges = <0x0 0x0 0xfd6e0000 0x10000>; #address-cells = <0x1>; #size-cells = <0x1>; phandle = <0x5a>; pmu@9000 { compatible = "arm,cci-400-pmu,r1"; reg = <0x9000 0x5000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4>; }; }; dma-controller@fd500000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd500000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7c 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14e8>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x5b>; }; dma-controller@fd510000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd510000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7d 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14e9>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x5c>; }; dma-controller@fd520000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd520000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7e 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14ea>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x5d>; }; dma-controller@fd530000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd530000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7f 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14eb>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x5e>; }; dma-controller@fd540000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd540000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x80 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14ec>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x5f>; }; dma-controller@fd550000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd550000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x81 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14ed>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x60>; }; dma-controller@fd560000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd560000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x82 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14ee>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x61>; }; dma-controller@fd570000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd570000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x83 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; iommus = <0xd 0x14ef>; power-domains = <0xc 0x2a>; #dma-cells = <0x1>; clocks = <0x3 0x13 0x3 0x1f>; phandle = <0x62>; }; interrupt-controller@f9010000 { compatible = "arm,gic-400"; #interrupt-cells = <0x3>; reg = <0x0 0xf9010000 0x0 0x10000 0x0 0xf9020000 0x0 0x20000 0x0 0xf9040000 0x0 0x20000 0x0 0xf9060000 0x0 0x20000>; interrupt-controller; interrupt-parent = <0x4>; interrupts = <0x1 0x9 0xf04>; num_cpus = <0x2>; num_interrupts = <0x60>; phandle = <0x4>; }; gpu@fd4b0000 { status = "okay"; compatible = "arm,mali-400", "arm,mali-utgard"; reg = <0x0 0xfd4b0000 0x0 0x10000>; interrupt-parent = <0x4>; interrupts = <0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4>; interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1"; clock-names = "gpu", "gpu_pp0", "gpu_pp1"; power-domains = <0xc 0x3a>; clocks = <0x3 0x18 0x3 0x19 0x3 0x1a>; xlnx,tz-nonsecure = <0x1>; phandle = <0x63>; }; dma-controller@ffa80000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffa80000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4d 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x64>; }; dma-controller@ffa90000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffa90000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4e 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x65>; }; dma-controller@ffaa0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffaa0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4f 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x66>; }; dma-controller@ffab0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffab0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x50 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x67>; }; dma-controller@ffac0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffac0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x51 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x68>; }; dma-controller@ffad0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffad0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x52 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x69>; }; dma-controller@ffae0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffae0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x53 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x6a>; }; dma-controller@ffaf0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffaf0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x54 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; power-domains = <0xc 0x2b>; #dma-cells = <0x1>; clocks = <0x3 0x44 0x3 0x1f>; phandle = <0x6b>; }; memory-controller@fd070000 { compatible = "xlnx,zynqmp-ddrc-2.40a"; reg = <0x0 0xfd070000 0x0 0x30000>; interrupt-parent = <0x4>; interrupts = <0x0 0x70 0x4>; phandle = <0x6c>; }; nand-controller@ff100000 { compatible = "xlnx,zynqmp-nand-controller", "arasan,nfc-v3p10"; status = "disabled"; reg = <0x0 0xff100000 0x0 0x1000>; clock-names = "controller", "bus"; interrupt-parent = <0x4>; interrupts = <0x0 0xe 0x4>; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x872>; power-domains = <0xc 0x2c>; clocks = <0x3 0x3c 0x3 0x1f>; phandle = <0x6d>; }; ethernet@ff0b0000 { compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x39 0x4 0x0 0x39 0x4>; reg = <0x0 0xff0b0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x874>; power-domains = <0xc 0x1d>; resets = <0xe 0x1d>; clocks = <0x3 0x1f 0x3 0x68 0x3 0x2d 0x3 0x31 0x3 0x2c>; phandle = <0x6e>; }; ethernet@ff0c0000 { compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x3b 0x4 0x0 0x3b 0x4>; reg = <0x0 0xff0c0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x875>; power-domains = <0xc 0x1e>; resets = <0xe 0x1e>; clocks = <0x3 0x1f 0x3 0x69 0x3 0x2e 0x3 0x32 0x3 0x2c>; phandle = <0x6f>; }; ethernet@ff0d0000 { compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x3d 0x4 0x0 0x3d 0x4>; reg = <0x0 0xff0d0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x876>; power-domains = <0xc 0x1f>; resets = <0xe 0x1f>; clocks = <0x3 0x1f 0x3 0x6a 0x3 0x2f 0x3 0x33 0x3 0x2c>; phandle = <0x70>; }; ethernet@ff0e0000 { compatible = "xlnx,zynqmp-gem", "cdns,zynqmp-gem", "cdns,gem"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>; reg = <0x0 0xff0e0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x877>; power-domains = <0xc 0x20>; resets = <0xe 0x20>; clocks = <0x3 0x1f 0x3 0x6b 0x3 0x30 0x3 0x34 0x3 0x2c>; phy-mode = "rgmii-id"; xlnx,ptp-enet-clock = <0x0>; local-mac-address = [ff ff ff ff ff ff]; phy-handle = <0xf>; phandle = <0x71>; ethernet-phy@c { reg = <0xc>; ti,rx-internal-delay = <0x8>; ti,tx-internal-delay = <0xa>; ti,fifo-depth = <0x1>; ti,dp83867-rxctrl-strap-quirk; phandle = <0xf>; }; }; gpio@ff0a0000 { compatible = "xlnx,zynqmp-gpio-1.0"; status = "okay"; #gpio-cells = <0x2>; gpio-controller; interrupt-parent = <0x4>; interrupts = <0x0 0x10 0x4>; interrupt-controller; #interrupt-cells = <0x2>; reg = <0x0 0xff0a0000 0x0 0x1000>; power-domains = <0xc 0x2e>; clocks = <0x3 0x1f>; emio-gpio-width = <0x20>; gpio-mask-high = <0x0>; gpio-mask-low = <0x5600>; phandle = <0x1f>; }; i2c@ff020000 { compatible = "cdns,i2c-r1p14"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x11 0x4>; reg = <0x0 0xff020000 0x0 0x1000>; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x25>; clocks = <0x3 0x3d>; clock-frequency = <0x61a80>; phandle = <0x72>; }; i2c@ff030000 { compatible = "cdns,i2c-r1p14"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x12 0x4>; reg = <0x0 0xff030000 0x0 0x1000>; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x26>; clocks = <0x3 0x3e>; clock-frequency = <0x61a80>; phandle = <0x73>; }; memory-controller@ff960000 { compatible = "xlnx,zynqmp-ocmc-1.0"; reg = <0x0 0xff960000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0xa 0x4>; phandle = <0x74>; }; perf-monitor@ffa00000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xffa00000 0x0 0x10000>; interrupts = <0x0 0x19 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x1>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1f>; phandle = <0x75>; }; perf-monitor@fd0b0000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xfd0b0000 0x0 0x10000>; interrupts = <0x0 0x7b 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x6>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x0>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0xa>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1c>; phandle = <0x76>; }; perf-monitor@fd490000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xfd490000 0x0 0x10000>; interrupts = <0x0 0x7b 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x0>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1c>; phandle = <0x77>; }; perf-monitor@ffa10000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xffa10000 0x0 0x10000>; interrupts = <0x0 0x19 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x1>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1f>; phandle = <0x78>; }; pcie@fd0e0000 { compatible = "xlnx,nwl-pcie-2.11"; status = "disabled"; #address-cells = <0x3>; #size-cells = <0x2>; #interrupt-cells = <0x1>; msi-controller; device_type = "pci"; interrupt-parent = <0x4>; interrupts = <0x0 0x76 0x4 0x0 0x75 0x4 0x0 0x74 0x4 0x0 0x73 0x4 0x0 0x72 0x4>; interrupt-names = "misc", "dummy", "intx", "msi1", "msi0"; msi-parent = <0x10>; reg = <0x0 0xfd0e0000 0x0 0x1000 0x0 0xfd480000 0x0 0x1000 0x80 0x0 0x0 0x1000000>; reg-names = "breg", "pcireg", "cfg"; ranges = <0x2000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000 0x43000000 0x6 0x0 0x6 0x0 0x2 0x0>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; bus-range = <0x0 0xff>; interrupt-map = <0x0 0x0 0x0 0x1 0x11 0x1 0x0 0x0 0x0 0x2 0x11 0x2 0x0 0x0 0x0 0x3 0x11 0x3 0x0 0x0 0x0 0x4 0x11 0x4>; iommus = <0xd 0x4d0>; power-domains = <0xc 0x3b>; clocks = <0x3 0x17>; phandle = <0x10>; legacy-interrupt-controller { interrupt-controller; #address-cells = <0x0>; #interrupt-cells = <0x1>; phandle = <0x11>; }; }; spi@ff0f0000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-qspi-1.0"; status = "okay"; clock-names = "ref_clk", "pclk"; interrupts = <0x0 0xf 0x4>; interrupt-parent = <0x4>; num-cs = <0x1>; reg = <0x0 0xff0f0000 0x0 0x1000 0x0 0xc0000000 0x0 0x8000000>; #address-cells = <0x1>; #size-cells = <0x0>; iommus = <0xd 0x873>; power-domains = <0xc 0x2d>; clocks = <0x3 0x35 0x3 0x1f>; is-dual = <0x1>; spi-rx-bus-width = <0x4>; spi-tx-bus-width = <0x4>; phandle = <0x79>; flash@0 { spi-tx-bus-width = <0x4>; spi-rx-bus-width = <0x4>; compatible = "m25p80", "jedec,spi-nor"; reg = <0x0>; #address-cells = <0x1>; #size-cells = <0x1>; spi-max-frequency = <0x2faf080>; phandle = <0x7a>; partition@0 { label = "qspi-boot"; reg = <0x0 0x1e00000>; }; partition@1 { label = "qspi-bootenv"; reg = <0x1e00000 0x40000>; }; partition@2 { label = "qspi-kernel"; reg = <0x1e40000 0x2140000>; }; partition@3 { label = "qspi-bootscr"; reg = <0x3f80000 0x80000>; }; partition@0x00000000 { label = "boot"; reg = <0x0 0x1e00000>; }; partition@0x01000000 { label = "bootenv"; reg = <0x1e00000 0x40000>; }; partition@0x00140000 { label = "kernel"; reg = <0x1e40000 0x2140000>; }; partition@0x01240000 { label = "bootscr"; reg = <0x3f80000 0x80000>; }; }; }; phy@fd400000 { compatible = "xlnx,zynqmp-psgtr-v1.1"; status = "okay"; reg = <0x0 0xfd400000 0x0 0x40000 0x0 0xfd3d0000 0x0 0x1000>; reg-names = "serdes", "siou"; #phy-cells = <0x4>; clocks = <0x12 0x13 0x14 0x15>; clock-names = "ref0", "ref1", "ref2", "ref3"; phandle = <0x1a>; }; rtc@ffa60000 { compatible = "xlnx,zynqmp-rtc"; status = "okay"; reg = <0x0 0xffa60000 0x0 0x100>; interrupt-parent = <0x4>; interrupts = <0x0 0x1a 0x4 0x0 0x1b 0x4>; interrupt-names = "alarm", "sec"; calibration = <0x7fff>; phandle = <0x7b>; }; ahci@fd0c0000 { compatible = "ceva,ahci-1v84"; status = "okay"; reg = <0x0 0xfd0c0000 0x0 0x2000>; interrupt-parent = <0x4>; interrupts = <0x0 0x85 0x4>; power-domains = <0xc 0x1c>; resets = <0xe 0x10>; clocks = <0x3 0x16>; xlnx,tz-nonsecure-sata0 = <0x0>; xlnx,tz-nonsecure-sata1 = <0x0>; phandle = <0x7c>; }; mmc@ff160000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x30 0x4>; reg = <0x0 0xff160000 0x0 0x1000>; clock-names = "clk_xin", "clk_ahb"; xlnx,device_id = <0x0>; iommus = <0xd 0x870>; power-domains = <0xc 0x27>; #clock-cells = <0x1>; clock-output-names = "clk_out_sd0", "clk_in_sd0"; resets = <0xe 0x26>; clocks = <0x3 0x36 0x3 0x1f>; assigned-clocks = <0x3 0x36>; phandle = <0x7d>; }; mmc@ff170000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x31 0x4>; reg = <0x0 0xff170000 0x0 0x1000>; clock-names = "clk_xin", "clk_ahb"; xlnx,device_id = <0x1>; iommus = <0xd 0x871>; power-domains = <0xc 0x28>; #clock-cells = <0x1>; clock-output-names = "clk_out_sd1", "clk_in_sd1"; resets = <0xe 0x27>; clocks = <0x3 0x37 0x3 0x1f>; assigned-clocks = <0x3 0x37>; clock-frequency = <0xb2cbcae>; xlnx,mio-bank = <0x1>; phandle = <0x7e>; }; smmu@fd800000 { compatible = "arm,mmu-500"; reg = <0x0 0xfd800000 0x0 0x20000>; #iommu-cells = <0x1>; status = "disabled"; #global-interrupts = <0x1>; interrupt-parent = <0x4>; interrupts = <0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4>; phandle = <0xd>; }; spi@ff040000 { compatible = "cdns,spi-r1p6"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x13 0x4>; reg = <0x0 0xff040000 0x0 0x1000>; clock-names = "ref_clk", "pclk"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x23>; clocks = <0x3 0x3a 0x3 0x1f>; is-decoded-cs = <0x0>; num-cs = <0x1>; phandle = <0x7f>; spidev@0x00 { compatible = "rohm,dh2228fv"; spi-max-frequency = <0xf4240>; reg = <0x0>; }; }; spi@ff050000 { compatible = "cdns,spi-r1p6"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x14 0x4>; reg = <0x0 0xff050000 0x0 0x1000>; clock-names = "ref_clk", "pclk"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x24>; clocks = <0x3 0x3b 0x3 0x1f>; phandle = <0x80>; }; timer@ff110000 { compatible = "cdns,ttc"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x24 0x4 0x0 0x25 0x4 0x0 0x26 0x4>; reg = <0x0 0xff110000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x18>; clocks = <0x3 0x1f>; phandle = <0x81>; }; timer@ff120000 { compatible = "cdns,ttc"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x27 0x4 0x0 0x28 0x4 0x0 0x29 0x4>; reg = <0x0 0xff120000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x19>; clocks = <0x3 0x1f>; phandle = <0x82>; }; timer@ff130000 { compatible = "cdns,ttc"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x2a 0x4 0x0 0x2b 0x4 0x0 0x2c 0x4>; reg = <0x0 0xff130000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x1a>; clocks = <0x3 0x1f>; phandle = <0x83>; }; timer@ff140000 { compatible = "cdns,ttc"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x2d 0x4 0x0 0x2e 0x4 0x0 0x2f 0x4>; reg = <0x0 0xff140000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x1b>; clocks = <0x3 0x1f>; phandle = <0x84>; }; serial@ff000000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x15 0x4>; reg = <0x0 0xff000000 0x0 0x1000>; clock-names = "uart_clk", "pclk"; power-domains = <0xc 0x21>; clocks = <0x3 0x38 0x3 0x1f>; cts-override; device_type = "serial"; port-number = <0x0>; phandle = <0x85>; }; serial@ff010000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x16 0x4>; reg = <0x0 0xff010000 0x0 0x1000>; clock-names = "uart_clk", "pclk"; power-domains = <0xc 0x22>; clocks = <0x3 0x39 0x3 0x1f>; cts-override; device_type = "serial"; port-number = <0x2>; phandle = <0x86>; }; usb0@ff9d0000 { #address-cells = <0x2>; #size-cells = <0x2>; status = "okay"; compatible = "xlnx,zynqmp-dwc3"; reg = <0x0 0xff9d0000 0x0 0x100>; clock-names = "bus_clk", "ref_clk"; power-domains = <0xc 0x16>; resets = <0xe 0x3b 0xe 0x3d 0xe 0x3f>; reset-names = "usb_crst", "usb_hibrst", "usb_apbrst"; reset-gpios = <0x16 0x1 0x1>; ranges; clocks = <0x3 0x20 0x3 0x22>; assigned-clocks = <0x3 0x20 0x3 0x22>; xlnx,tz-nonsecure = <0x1>; xlnx,usb-polarity = <0x0>; xlnx,usb-reset-mode = <0x0>; phandle = <0x87>; usb@fe200000 { compatible = "snps,dwc3"; status = "okay"; reg = <0x0 0xfe200000 0x0 0x40000>; interrupt-parent = <0x4>; interrupt-names = "dwc_usb3", "otg", "hiber"; interrupts = <0x0 0x41 0x4 0x0 0x45 0x4 0x0 0x4b 0x4>; iommus = <0xd 0x860>; snps,quirk-frame-length-adjustment = <0x20>; snps,refclk_fladj; clock-names = "ref"; snps,enable_guctl1_resume_quirk; snps,enable_guctl1_ipd_quirk; snps,xhci-reset-on-resume; snps,xhci-stream-quirk; clocks = <0x3 0x22>; phandle = <0x88>; }; }; usb1@ff9e0000 { #address-cells = <0x2>; #size-cells = <0x2>; status = "disabled"; compatible = "xlnx,zynqmp-dwc3"; reg = <0x0 0xff9e0000 0x0 0x100>; clock-names = "bus_clk", "ref_clk"; power-domains = <0xc 0x17>; resets = <0xe 0x3c 0xe 0x3e 0xe 0x40>; reset-names = "usb_crst", "usb_hibrst", "usb_apbrst"; ranges; clocks = <0x3 0x21 0x3 0x22>; assigned-clocks = <0x3 0x21 0x3 0x22>; phandle = <0x89>; usb@fe300000 { compatible = "snps,dwc3"; status = "disabled"; reg = <0x0 0xfe300000 0x0 0x40000>; interrupt-parent = <0x4>; interrupt-names = "dwc_usb3", "otg", "hiber"; interrupts = <0x0 0x46 0x4 0x0 0x4a 0x4 0x0 0x4c 0x4>; iommus = <0xd 0x861>; snps,quirk-frame-length-adjustment = <0x20>; snps,refclk_fladj; clock-names = "ref"; snps,enable_guctl1_resume_quirk; snps,enable_guctl1_ipd_quirk; snps,xhci-reset-on-resume; snps,xhci-stream-quirk; clocks = <0x3 0x22>; phandle = <0x8a>; }; }; watchdog@fd4d0000 { compatible = "cdns,wdt-r1p2"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x71 0x1>; reg = <0x0 0xfd4d0000 0x0 0x1000>; timeout-sec = <0x3c>; reset-on-timeout; clocks = <0x3 0x4b>; phandle = <0x8b>; }; watchdog@ff150000 { compatible = "cdns,wdt-r1p2"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x34 0x1>; reg = <0x0 0xff150000 0x0 0x1000>; timeout-sec = <0xa>; clocks = <0x3 0x70>; phandle = <0x8c>; }; ams@ffa50000 { compatible = "xlnx,zynqmp-ams"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x38 0x4>; interrupt-names = "ams-irq"; reg = <0x0 0xffa50000 0x0 0x800>; reg-names = "ams-base"; #address-cells = <0x2>; #size-cells = <0x2>; #io-channel-cells = <0x1>; ranges; clocks = <0x3 0x46>; phandle = <0x8d>; ams_ps@ffa50800 { compatible = "xlnx,zynqmp-ams-ps"; status = "okay"; reg = <0x0 0xffa50800 0x0 0x400>; phandle = <0x8e>; }; ams_pl@ffa50c00 { compatible = "xlnx,zynqmp-ams-pl"; status = "okay"; reg = <0x0 0xffa50c00 0x0 0x400>; phandle = <0x8f>; }; }; dma-controller@fd4c0000 { compatible = "xlnx,zynqmp-dpdma"; status = "okay"; reg = <0x0 0xfd4c0000 0x0 0x1000>; interrupts = <0x0 0x7a 0x4>; interrupt-parent = <0x4>; clock-names = "axi_clk"; power-domains = <0xc 0x29>; dma-channels = <0x6>; iommus = <0xd 0xce4>; #dma-cells = <0x1>; clocks = <0x3 0x14>; assigned-clocks = <0x3 0x14>; phandle = <0x18>; }; dp_aud@fd4ac000 { compatible = "xlnx,zynqmp-dpaud-setting", "syscon"; reg = <0x0 0xfd4ac000 0x0 0x1000>; phandle = <0x17>; }; display@fd4a0000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-dpsub-1.7"; status = "okay"; reg = <0x0 0xfd4a0000 0x0 0x1000 0x0 0xfd4aa000 0x0 0x1000 0x0 0xfd4ab000 0x0 0x1000>; reg-names = "dp", "blend", "av_buf"; xlnx,dpaud-reg = <0x17>; interrupts = <0x0 0x77 0x4>; interrupt-parent = <0x4>; iommus = <0xd 0xce3>; clock-names = "dp_apb_clk", "dp_aud_clk", "dp_vtc_pixel_clk_in"; power-domains = <0xc 0x29>; resets = <0xe 0x3>; dma-names = "vid0", "vid1", "vid2", "gfx0"; dmas = <0x18 0x0 0x18 0x1 0x18 0x2 0x18 0x3>; clocks = <0x19 0x3 0x11 0x3 0x10>; assigned-clocks = <0x3 0x12 0x3 0x11 0x3 0x10>; phy-names = "dp-phy0", "dp-phy1"; phys = <0x1a 0x1 0x6 0x0 0x3 0x1a 0x0 0x6 0x1 0x3>; xlnx,max-lanes = <0x2>; phandle = <0x90>; i2c-bus { }; zynqmp_dp_snd_codec0 { compatible = "xlnx,dp-snd-codec"; clock-names = "aud_clk"; clocks = <0x3 0x11>; status = "okay"; phandle = <0x1d>; }; zynqmp_dp_snd_pcm0 { compatible = "xlnx,dp-snd-pcm0"; dmas = <0x18 0x4>; dma-names = "tx"; status = "okay"; phandle = <0x1b>; }; zynqmp_dp_snd_pcm1 { compatible = "xlnx,dp-snd-pcm1"; dmas = <0x18 0x5>; dma-names = "tx"; status = "okay"; phandle = <0x1c>; }; zynqmp_dp_snd_card { compatible = "xlnx,dp-snd-card"; xlnx,dp-snd-pcm = <0x1b 0x1c>; xlnx,dp-snd-codec = <0x1d>; status = "okay"; phandle = <0x91>; }; }; }; fclk0 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x47>; phandle = <0x92>; }; fclk1 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x48>; phandle = <0x93>; }; fclk2 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x49>; phandle = <0x94>; }; fclk3 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x4a>; phandle = <0x95>; }; pss_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x1fc9350>; phandle = <0x6>; }; video_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x1fc9f08>; phandle = <0x7>; }; pss_alt_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x0>; phandle = <0x8>; }; gt_crx_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x66ff300>; phandle = <0xa>; }; aux_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x19bfcc0>; phandle = <0x9>; }; dp_aclk { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x5f5e100>; clock-accuracy = <0x64>; phandle = <0x19>; }; amba_pl@0 { #address-cells = <0x2>; #size-cells = <0x2>; compatible = "simple-bus"; ranges; phandle = <0x96>; i2c@80090000 { #address-cells = <0x1>; #size-cells = <0x0>; clock-names = "s_axi_aclk"; clocks = <0x1e>; compatible = "xlnx,axi-iic-2.1", "xlnx,xps-iic-2.00.a"; interrupt-names = "iic2intc_irpt"; interrupt-parent = <0x4>; interrupts = <0x0 0x6e 0x4>; reg = <0x0 0x80090000 0x0 0x10000>; phandle = <0x97>; sensor@1a { compatible = "sony,imx274"; reg = <0x1a>; #address-cells = <0x1>; #size-cells = <0x0>; reset-gpios = <0x1f 0x5a 0x1>; phandle = <0x98>; port@0 { reg = <0x0>; endpoint { remote-endpoint = <0x20>; phandle = <0x2d>; }; }; }; }; serial@80000000 { clock-names = "s_axi_aclk"; clocks = <0x3 0x47>; compatible = "xlnx,axi-uartlite-2.0", "xlnx,xps-uartlite-1.00.a"; current-speed = <0x1c200>; device_type = "serial"; interrupt-names = "interrupt"; interrupt-parent = <0x4>; interrupts = <0x0 0x68 0x1>; port-number = <0x1>; reg = <0x0 0x80000000 0x0 0x10000>; xlnx,baudrate = <0x1c200>; xlnx,data-bits = <0x8>; xlnx,odd-parity = <0x0>; xlnx,s-axi-aclk-freq-hz-d = "99.990005"; xlnx,use-parity = <0x0>; phandle = <0x99>; }; dpuczdx8g@8f000000 { clock-names = "s_axi_aclk", "dpu_2x_clk", "m_axi_dpu_aclk"; clocks = <0x3 0x47 0x21 0x22>; compatible = "xlnx,dpuczdx8g-4.1"; interrupt-names = "dpu0_interrupt", "sfm_interrupt"; interrupt-parent = <0x4>; interrupts = <0x0 0x59 0x4 0x0 0x5c 0x4>; reg = <0x0 0x8f000000 0x0 0x1000000>; phandle = <0x9a>; }; misc_clk_0 { #clock-cells = <0x0>; clock-frequency = <0x26bd3898>; compatible = "fixed-clock"; phandle = <0x21>; }; misc_clk_1 { #clock-cells = <0x0>; clock-frequency = <0x135e9c4c>; compatible = "fixed-clock"; phandle = <0x22>; }; v_frmbuf_wr@80030000 { #dma-cells = <0x1>; clock-names = "ap_clk"; clocks = <0x3 0x48>; compatible = "xlnx,v-frmbuf-wr-2.4", "xlnx,axi-frmbuf-wr-v2.2"; interrupt-names = "interrupt"; interrupt-parent = <0x4>; interrupts = <0x0 0x6b 0x4>; reg = <0x0 0x80030000 0x0 0x10000>; reset-gpios = <0x1f 0x58 0x1>; xlnx,dma-addr-width = <0x20>; xlnx,dma-align = <0x10>; xlnx,max-height = <0x870>; xlnx,max-width = <0xf00>; xlnx,pixels-per-clock = <0x2>; xlnx,s-axi-ctrl-addr-width = <0x7>; xlnx,s-axi-ctrl-data-width = <0x20>; xlnx,vid-formats = "bgr888", "uyvy", "vuy888", "yuyv", "y_u_v8"; xlnx,video-width = <0x8>; phandle = <0x36>; }; v_hdmi_rx_ss@80010000 { clock-names = "s_axi_cpu_aclk", "link_clk", "s_axis_audio_aclk", "video_clk", "s_axis_video_aclk"; clocks = <0x3 0x47 0x23 0x3 0x48 0x24 0x3 0x48>; compatible = "xlnx,v-hdmi-rx-ss-3.2", "xlnx,v-hdmi-rx-ss-3.1"; interrupt-names = "irq"; interrupt-parent = <0x4>; interrupts = <0x0 0x69 0x4>; phy-names = "hdmi-phy0", "hdmi-phy1", "hdmi-phy2"; phys = <0x25 0x0 0x1 0x1 0x0 0x26 0x0 0x1 0x1 0x0 0x27 0x0 0x1 0x1 0x0>; reg = <0x0 0x80010000 0x0 0x10000>; xlnx,edid-ram-size = <0x100>; xlnx,input-pixels-per-clock = <0x2>; xlnx,max-bits-per-component = <0x8>; phandle = <0x9b>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0x9c>; port@0 { reg = <0x0>; xlnx,video-format = <0x0>; xlnx,video-width = <0xa>; phandle = <0x9d>; endpoint { remote-endpoint = <0x28>; phandle = <0x37>; }; }; }; }; misc_clk_2 { #clock-cells = <0x0>; clock-frequency = <0x8d9ee20>; compatible = "fixed-clock"; phandle = <0x23>; }; misc_clk_3 { #clock-cells = <0x0>; clock-frequency = <0x11b3dc40>; compatible = "fixed-clock"; phandle = <0x24>; }; vid_phy_controller@80020000 { clock-names = "mgtrefclk1_pad_p_in", "mgtrefclk1_pad_n_in", "gtsouthrefclk0_in", "gtsouthrefclk0_odiv2_in", "vid_phy_rx_axi4s_aclk", "vid_phy_sb_aclk", "vid_phy_axi4lite_aclk", "drpclk", "dru-clk"; clocks = <0x29 0x29 0x29 0x29 0x23 0x3 0x47 0x3 0x47 0x3 0x47 0x2a>; compatible = "xlnx,vid-phy-controller-2.2", "xlnx,vid-phy-controller-2.1"; interrupt-names = "irq"; interrupt-parent = <0x4>; interrupts = <0x0 0x6a 0x4>; reg = <0x0 0x80020000 0x0 0x10000>; xlnx,hdmi-fast-switch = <0x1>; xlnx,input-pixels-per-clock = <0x2>; xlnx,nidru = <0x1>; xlnx,nidru-refclk-sel = <0x4>; xlnx,rx-no-of-channels = <0x3>; xlnx,rx-pll-selection = <0x0>; xlnx,rx-protocol = <0x1>; xlnx,rx-refclk-sel = <0x1>; xlnx,transceiver-type = <0x5>; xlnx,transceiver-width = <0x2>; xlnx,tx-buffer-bypass = <0x1>; xlnx,tx-no-of-channels = <0x3>; xlnx,tx-pll-selection = <0x6>; xlnx,tx-protocol = <0x3>; xlnx,tx-refclk-sel = <0x1>; xlnx,use-gt-ch4-hdmi = <0x0>; phandle = <0x9e>; vphy_lane@0 { #phy-cells = <0x4>; phandle = <0x25>; }; vphy_lane@1 { #phy-cells = <0x4>; phandle = <0x26>; }; vphy_lane@2 { #phy-cells = <0x4>; phandle = <0x27>; }; }; misc_clk_4 { #clock-cells = <0x0>; clock-frequency = <0x5f5e100>; compatible = "fixed-clock"; phandle = <0x29>; }; mipi_csi2_rx_subsystem@80040000 { clock-names = "lite_aclk", "dphy_clk_200M", "video_aclk"; clocks = <0x3 0x47 0x2b 0x3 0x48>; compatible = "xlnx,mipi-csi2-rx-subsystem-5.0"; interrupt-names = "csirxss_csi_irq"; interrupt-parent = <0x4>; interrupts = <0x0 0x6c 0x4>; reg = <0x0 0x80040000 0x0 0x1000>; xlnx,axis-tdata-width = <0x20>; xlnx,csi-pxl-format = <0x2b>; xlnx,en-active-lanes; xlnx,max-lanes = <0x4>; xlnx,ppc = <0x2>; xlnx,vc = <0x4>; xlnx,vfb; phandle = <0x9f>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xa0>; port@1 { reg = <0x1>; xlnx,cfa-pattern = "rggb"; xlnx,video-format = <0xc>; xlnx,video-width = <0x8>; phandle = <0xa1>; endpoint { remote-endpoint = <0x2c>; phandle = <0x2f>; }; }; port@0 { reg = <0x0>; xlnx,cfa-pattern = "rggb"; xlnx,video-format = <0xc>; xlnx,video-width = <0x8>; phandle = <0xa2>; endpoint { data-lanes = <0x1 0x2 0x3 0x4>; remote-endpoint = <0x2d>; phandle = <0x20>; }; }; }; }; misc_clk_5 { #clock-cells = <0x0>; clock-frequency = <0xbeb73e0>; compatible = "fixed-clock"; phandle = <0x2b>; }; v_demosaic@80050000 { clock-names = "ap_clk"; clocks = <0x3 0x48>; compatible = "xlnx,v-demosaic-1.1", "xlnx,v-demosaic"; reg = <0x0 0x80050000 0x0 0x10000>; reset-gpios = <0x1f 0x55 0x1>; xlnx,max-height = <0x870>; xlnx,max-width = <0xf00>; xlnx,s-axi-ctrl-addr-width = <0x6>; xlnx,s-axi-ctrl-data-width = <0x20>; phandle = <0xa3>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xa4>; port@1 { reg = <0x1>; xlnx,cfa-pattern = "rggb"; xlnx,video-width = <0x8>; phandle = <0xa5>; endpoint { remote-endpoint = <0x2e>; phandle = <0x31>; }; }; port@0 { reg = <0x0>; xlnx,cfa-pattern = "rggb"; xlnx,video-width = <0x8>; phandle = <0xa6>; endpoint { remote-endpoint = <0x2f>; phandle = <0x2c>; }; }; }; }; v_frmbuf_wr@80060000 { #dma-cells = <0x1>; clock-names = "ap_clk"; clocks = <0x3 0x48>; compatible = "xlnx,v-frmbuf-wr-2.4", "xlnx,axi-frmbuf-wr-v2.2"; interrupt-names = "interrupt"; interrupt-parent = <0x4>; interrupts = <0x0 0x6d 0x4>; reg = <0x0 0x80060000 0x0 0x10000>; reset-gpios = <0x1f 0x50 0x1>; xlnx,dma-addr-width = <0x20>; xlnx,dma-align = <0x10>; xlnx,max-height = <0x870>; xlnx,max-width = <0xf00>; xlnx,pixels-per-clock = <0x2>; xlnx,s-axi-ctrl-addr-width = <0x7>; xlnx,s-axi-ctrl-data-width = <0x20>; xlnx,vid-formats = "bgr888", "uyvy", "y8", "yuyv"; xlnx,video-width = <0x8>; phandle = <0x38>; }; v_gamma_lut@80070000 { clock-names = "ap_clk"; clocks = <0x3 0x48>; compatible = "xlnx,v-gamma-lut-1.1", "xlnx,v-gamma-lut"; reg = <0x0 0x80070000 0x0 0x10000>; reset-gpios = <0x1f 0x56 0x1>; xlnx,max-height = <0x870>; xlnx,max-width = <0xf00>; xlnx,s-axi-ctrl-addr-width = <0xd>; xlnx,s-axi-ctrl-data-width = <0x20>; phandle = <0xa7>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xa8>; port@1 { reg = <0x1>; xlnx,video-width = <0x8>; phandle = <0xa9>; endpoint { remote-endpoint = <0x30>; phandle = <0x33>; }; }; port@0 { reg = <0x0>; xlnx,video-width = <0x8>; phandle = <0xaa>; endpoint { remote-endpoint = <0x31>; phandle = <0x2e>; }; }; }; }; v_proc_ss@80080000 { clock-names = "aclk"; clocks = <0x3 0x48>; compatible = "xlnx,v-vpss-csc"; reg = <0x0 0x80080000 0x0 0x10000>; reset-gpios = <0x1f 0x54 0x1>; xlnx,colorspace-support = <0x2>; xlnx,csc-enable-window = "false"; xlnx,max-height = <0x870>; xlnx,max-width = <0xf00>; xlnx,num-video-components = <0x3>; xlnx,samples-per-clk = <0x2>; xlnx,topology = <0x3>; xlnx,use-uram = <0x0>; xlnx,video-width = <0x8>; phandle = <0xab>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xac>; port@1 { reg = <0x1>; xlnx,video-format = <0x3>; xlnx,video-width = <0x8>; phandle = <0xad>; endpoint { remote-endpoint = <0x32>; phandle = <0x35>; }; }; port@0 { reg = <0x0>; xlnx,video-format = <0x3>; xlnx,video-width = <0x8>; phandle = <0xae>; endpoint { remote-endpoint = <0x33>; phandle = <0x30>; }; }; }; }; v_proc_ss@800c0000 { clock-names = "aclk_axis", "aclk_ctrl"; clocks = <0x3 0x48 0x3 0x48>; compatible = "xlnx,v-vpss-scaler-2.2"; reg = <0x0 0x800c0000 0x0 0x40000>; reset-gpios = <0x1f 0x52 0x1>; xlnx,colorspace-support = <0x1>; xlnx,csc-enable-window = "true"; xlnx,enable-csc = "true"; xlnx,h-scaler-phases = <0x40>; xlnx,h-scaler-taps = <0x8>; xlnx,max-height = <0x870>; xlnx,max-num-phases = <0x40>; xlnx,max-width = <0xf00>; xlnx,num-hori-taps = <0x8>; xlnx,num-vert-taps = <0x8>; xlnx,pix-per-clk = <0x2>; xlnx,samples-per-clk = <0x2>; xlnx,scaler-algorithm = <0x2>; xlnx,topology = <0x0>; xlnx,use-uram = <0x0>; xlnx,v-scaler-phases = <0x40>; xlnx,v-scaler-taps = <0x8>; xlnx,video-width = <0x8>; phandle = <0xaf>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xb0>; port@1 { reg = <0x1>; xlnx,video-format = <0x3>; xlnx,video-width = <0x8>; phandle = <0xb1>; endpoint { remote-endpoint = <0x34>; phandle = <0x39>; }; }; port@0 { reg = <0x0>; xlnx,video-format = <0x3>; xlnx,video-width = <0x8>; phandle = <0xb2>; endpoint { remote-endpoint = <0x35>; phandle = <0x32>; }; }; }; }; vcap_hier_hdmirx20_v_hdmi_rx_ss_0 { compatible = "xlnx,video"; dma-names = "port0"; dmas = <0x36 0x0>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xb3>; port@0 { direction = "input"; reg = <0x0>; phandle = <0xb4>; endpoint { remote-endpoint = <0x37>; phandle = <0x28>; }; }; }; }; vcap_hier_mipi_rx0_v_proc_ss_1 { compatible = "xlnx,video"; dma-names = "port0"; dmas = <0x38 0x0>; ports { #address-cells = <0x1>; #size-cells = <0x0>; phandle = <0xb5>; port@0 { direction = "input"; reg = <0x0>; phandle = <0xb6>; endpoint { remote-endpoint = <0x39>; phandle = <0x34>; }; }; }; }; vid_s_axi_clk { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x5f5b9f0>; phandle = <0x1e>; }; }; chosen { bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=512M"; stdout-path = "serial0:115200n8"; }; aliases { ethernet0 = "/axi/ethernet@ff0e0000"; i2c0 = "/axi/i2c@ff020000"; i2c1 = "/axi/i2c@ff030000"; i2c2 = "/amba_pl@0/i2c@80090000"; serial0 = "/axi/serial@ff000000"; serial1 = "/axi/serial@ff010000"; serial2 = "/amba_pl@0/serial@80000000"; spi0 = "/axi/spi@ff0f0000"; spi1 = "/axi/spi@ff040000"; }; memory { device_type = "memory"; reg = <0x0 0x0 0x0 0x7ff00000 0x8 0x0 0x0 0x80000000>; }; psgtr_ref_0 { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x5f5e100>; phandle = <0x12>; }; psgtr_ref_1 { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x7735940>; phandle = <0x13>; }; psgtr_ref_2 { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x18cba80>; phandle = <0x14>; }; psgtr_ref_3 { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x19bfcc0>; phandle = <0x15>; }; druclk { #clock-cells = <0x0>; clock-frequency = <0x9502f90>; compatible = "fixed-clock"; phandle = <0x2a>; }; __symbols__ { cpu0 = "/cpus/cpu@0"; cpu1 = "/cpus/cpu@1"; cpu2 = "/cpus/cpu@2"; cpu3 = "/cpus/cpu@3"; CPU_SLEEP_0 = "/cpus/idle-states/cpu-sleep-0"; cpu_opp_table = "/opp-table-cpu"; zynqmp_ipi = "/zynqmp_ipi"; ipi_mailbox_pmu1 = "/zynqmp_ipi/mailbox@ff990400"; dcc = "/dcc"; zynqmp_firmware = "/firmware/zynqmp-firmware"; zynqmp_power = "/firmware/zynqmp-firmware/zynqmp-power"; soc_revision = "/firmware/zynqmp-firmware/nvmem_firmware/soc_revision@0"; efuse_dna = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_dna@c"; efuse_usr0 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr0@20"; efuse_usr1 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr1@24"; efuse_usr2 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr2@28"; efuse_usr3 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr3@2c"; efuse_usr4 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr4@30"; efuse_usr5 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr5@34"; efuse_usr6 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr6@38"; efuse_usr7 = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_usr7@3c"; efuse_miscusr = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_miscusr@40"; efuse_chash = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_chash@50"; efuse_pufmisc = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_pufmisc@54"; efuse_sec = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_sec@58"; efuse_spkid = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_spkid@5c"; efuse_ppk0hash = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_ppk0hash@a0"; efuse_ppk1hash = "/firmware/zynqmp-firmware/nvmem_firmware/efuse_ppk1hash@d0"; zynqmp_pcap = "/firmware/zynqmp-firmware/pcap"; xlnx_aes = "/firmware/zynqmp-firmware/zynqmp-aes"; zynqmp_reset = "/firmware/zynqmp-firmware/reset-controller"; pinctrl0 = "/firmware/zynqmp-firmware/pinctrl"; xlnx_keccak_384 = "/firmware/zynqmp-firmware/sha384"; xlnx_rsa = "/firmware/zynqmp-firmware/zynqmp-rsa"; modepin_gpio = "/firmware/zynqmp-firmware/gpio"; zynqmp_clk = "/firmware/zynqmp-firmware/clock-controller"; fpga_full = "/fpga-full"; amba = "/axi"; can0 = "/axi/can@ff060000"; can1 = "/axi/can@ff070000"; cci = "/axi/cci@fd6e0000"; fpd_dma_chan1 = "/axi/dma-controller@fd500000"; fpd_dma_chan2 = "/axi/dma-controller@fd510000"; fpd_dma_chan3 = "/axi/dma-controller@fd520000"; fpd_dma_chan4 = "/axi/dma-controller@fd530000"; fpd_dma_chan5 = "/axi/dma-controller@fd540000"; fpd_dma_chan6 = "/axi/dma-controller@fd550000"; fpd_dma_chan7 = "/axi/dma-controller@fd560000"; fpd_dma_chan8 = "/axi/dma-controller@fd570000"; gic = "/axi/interrupt-controller@f9010000"; gpu = "/axi/gpu@fd4b0000"; lpd_dma_chan1 = "/axi/dma-controller@ffa80000"; lpd_dma_chan2 = "/axi/dma-controller@ffa90000"; lpd_dma_chan3 = "/axi/dma-controller@ffaa0000"; lpd_dma_chan4 = "/axi/dma-controller@ffab0000"; lpd_dma_chan5 = "/axi/dma-controller@ffac0000"; lpd_dma_chan6 = "/axi/dma-controller@ffad0000"; lpd_dma_chan7 = "/axi/dma-controller@ffae0000"; lpd_dma_chan8 = "/axi/dma-controller@ffaf0000"; mc = "/axi/memory-controller@fd070000"; nand0 = "/axi/nand-controller@ff100000"; gem0 = "/axi/ethernet@ff0b0000"; gem1 = "/axi/ethernet@ff0c0000"; gem2 = "/axi/ethernet@ff0d0000"; gem3 = "/axi/ethernet@ff0e0000"; phyc = "/axi/ethernet@ff0e0000/ethernet-phy@c"; gpio = "/axi/gpio@ff0a0000"; i2c0 = "/axi/i2c@ff020000"; i2c1 = "/axi/i2c@ff030000"; ocm = "/axi/memory-controller@ff960000"; perf_monitor_ocm = "/axi/perf-monitor@ffa00000"; perf_monitor_ddr = "/axi/perf-monitor@fd0b0000"; perf_monitor_cci = "/axi/perf-monitor@fd490000"; perf_monitor_lpd = "/axi/perf-monitor@ffa10000"; pcie = "/axi/pcie@fd0e0000"; pcie_intc = "/axi/pcie@fd0e0000/legacy-interrupt-controller"; qspi = "/axi/spi@ff0f0000"; flash0 = "/axi/spi@ff0f0000/flash@0"; psgtr = "/axi/phy@fd400000"; rtc = "/axi/rtc@ffa60000"; sata = "/axi/ahci@fd0c0000"; sdhci0 = "/axi/mmc@ff160000"; sdhci1 = "/axi/mmc@ff170000"; smmu = "/axi/smmu@fd800000"; spi0 = "/axi/spi@ff040000"; spi1 = "/axi/spi@ff050000"; ttc0 = "/axi/timer@ff110000"; ttc1 = "/axi/timer@ff120000"; ttc2 = "/axi/timer@ff130000"; ttc3 = "/axi/timer@ff140000"; uart0 = "/axi/serial@ff000000"; uart1 = "/axi/serial@ff010000"; usb0 = "/axi/usb0@ff9d0000"; dwc3_0 = "/axi/usb0@ff9d0000/usb@fe200000"; usb1 = "/axi/usb1@ff9e0000"; dwc3_1 = "/axi/usb1@ff9e0000/usb@fe300000"; watchdog0 = "/axi/watchdog@fd4d0000"; lpd_watchdog = "/axi/watchdog@ff150000"; xilinx_ams = "/axi/ams@ffa50000"; ams_ps = "/axi/ams@ffa50000/ams_ps@ffa50800"; ams_pl = "/axi/ams@ffa50000/ams_pl@ffa50c00"; zynqmp_dpdma = "/axi/dma-controller@fd4c0000"; zynqmp_dpaud_setting = "/axi/dp_aud@fd4ac000"; zynqmp_dpsub = "/axi/display@fd4a0000"; zynqmp_dp_snd_codec0 = "/axi/display@fd4a0000/zynqmp_dp_snd_codec0"; zynqmp_dp_snd_pcm0 = "/axi/display@fd4a0000/zynqmp_dp_snd_pcm0"; zynqmp_dp_snd_pcm1 = "/axi/display@fd4a0000/zynqmp_dp_snd_pcm1"; zynqmp_dp_snd_card0 = "/axi/display@fd4a0000/zynqmp_dp_snd_card"; fclk0 = "/fclk0"; fclk1 = "/fclk1"; fclk2 = "/fclk2"; fclk3 = "/fclk3"; pss_ref_clk = "/pss_ref_clk"; video_clk = "/video_clk"; pss_alt_ref_clk = "/pss_alt_ref_clk"; gt_crx_ref_clk = "/gt_crx_ref_clk"; aux_ref_clk = "/aux_ref_clk"; dp_aclk = "/dp_aclk"; amba_pl = "/amba_pl@0"; axi_iic_0 = "/amba_pl@0/i2c@80090000"; imx274 = "/amba_pl@0/i2c@80090000/sensor@1a"; sensor_out = "/amba_pl@0/i2c@80090000/sensor@1a/port@0/endpoint"; axi_uartlite_0 = "/amba_pl@0/serial@80000000"; hier_dpu_DPUCZDX8G = "/amba_pl@0/dpuczdx8g@8f000000"; misc_clk_0 = "/amba_pl@0/misc_clk_0"; misc_clk_1 = "/amba_pl@0/misc_clk_1"; hier_hdmirx20_v_frmbuf_wr_0 = "/amba_pl@0/v_frmbuf_wr@80030000"; hier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/v_hdmi_rx_ss@80010000"; hdmirx_portshier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/v_hdmi_rx_ss@80010000/ports"; hdmirx_porthier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/v_hdmi_rx_ss@80010000/ports/port@0"; hdmirx_outhier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/v_hdmi_rx_ss@80010000/ports/port@0/endpoint"; misc_clk_2 = "/amba_pl@0/misc_clk_2"; misc_clk_3 = "/amba_pl@0/misc_clk_3"; hier_hdmirx20_vid_phy_controller_0 = "/amba_pl@0/vid_phy_controller@80020000"; vphy_lane0 = "/amba_pl@0/vid_phy_controller@80020000/vphy_lane@0"; vphy_lane1 = "/amba_pl@0/vid_phy_controller@80020000/vphy_lane@1"; vphy_lane2 = "/amba_pl@0/vid_phy_controller@80020000/vphy_lane@2"; misc_clk_4 = "/amba_pl@0/misc_clk_4"; hier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000"; mipi_csi_portshier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000/ports"; mipi_csi_port1hier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000/ports/port@1"; mipi_csirx_outhier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000/ports/port@1/endpoint"; mipi_csi_port0hier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000/ports/port@0"; mipi_csi_inhier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/mipi_csi2_rx_subsystem@80040000/ports/port@0/endpoint"; misc_clk_5 = "/amba_pl@0/misc_clk_5"; hier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_demosaic@80050000"; demosaic_portshier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_demosaic@80050000/ports"; demosaic_port1hier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_demosaic@80050000/ports/port@1"; demo_outhier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_demosaic@80050000/ports/port@1/endpoint"; demosaic_port0hier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_demosaic@80050000/ports/port@0"; hier_mipi_rx0_v_demosaic_0hier_mipi_rx0_mipi_csi2_rx_subsyst_0 = "/amba_pl@0/v_demosaic@80050000/ports/port@0/endpoint"; hier_mipi_rx0_v_frmbuf_wr_0 = "/amba_pl@0/v_frmbuf_wr@80060000"; hier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_gamma_lut@80070000"; gamma_portshier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_gamma_lut@80070000/ports"; gamma_port1hier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_gamma_lut@80070000/ports/port@1"; gamma_outhier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_gamma_lut@80070000/ports/port@1/endpoint"; gamma_port0hier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_gamma_lut@80070000/ports/port@0"; hier_mipi_rx0_v_gamma_lut_0hier_mipi_rx0_v_demosaic_0 = "/amba_pl@0/v_gamma_lut@80070000/ports/port@0/endpoint"; hier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@80080000"; csc_portshier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@80080000/ports"; csc_port1hier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@80080000/ports/port@1"; csc_outhier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@80080000/ports/port@1/endpoint"; csc_port0hier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@80080000/ports/port@0"; hier_mipi_rx0_v_proc_ss_0hier_mipi_rx0_v_gamma_lut_0 = "/amba_pl@0/v_proc_ss@80080000/ports/port@0/endpoint"; hier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/v_proc_ss@800c0000"; scaler_portshier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/v_proc_ss@800c0000/ports"; scaler_port1hier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/v_proc_ss@800c0000/ports/port@1"; sca_outhier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/v_proc_ss@800c0000/ports/port@1/endpoint"; scaler_port0hier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/v_proc_ss@800c0000/ports/port@0"; hier_mipi_rx0_v_proc_ss_1hier_mipi_rx0_v_proc_ss_0 = "/amba_pl@0/v_proc_ss@800c0000/ports/port@0/endpoint"; vcap_portshier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/vcap_hier_hdmirx20_v_hdmi_rx_ss_0/ports"; vcap_porthier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/vcap_hier_hdmirx20_v_hdmi_rx_ss_0/ports/port@0"; hier_hdmirx20_v_frmbuf_wr_0hier_hdmirx20_v_hdmi_rx_ss_0 = "/amba_pl@0/vcap_hier_hdmirx20_v_hdmi_rx_ss_0/ports/port@0/endpoint"; vcap_portshier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/vcap_hier_mipi_rx0_v_proc_ss_1/ports"; vcap_porthier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/vcap_hier_mipi_rx0_v_proc_ss_1/ports/port@0"; hier_mipi_rx0_v_frmbuf_wr_0hier_mipi_rx0_v_proc_ss_1 = "/amba_pl@0/vcap_hier_mipi_rx0_v_proc_ss_1/ports/port@0/endpoint"; vid_s_axi_clk = "/amba_pl@0/vid_s_axi_clk"; psgtr_ref_0_pcie = "/psgtr_ref_0"; psgtr_ref_1_sata = "/psgtr_ref_1"; psgtr_ref_2_usb3 = "/psgtr_ref_2"; psgtr_ref_3_dp = "/psgtr_ref_3"; druclk_ref = "/druclk"; }; }; 有問題嗎
最新发布
07-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值