Hi Jagan,
On 2023/12/15 14:36, Jagan Teki wrote:
Hi Heiko/Kerver/Anatoloj,
On Mon, Dec 11, 2023 at 2:30 PM Jagan Teki <ja...@amarulasolutions.com> wrote:
Unlike RK3399, Sunxi/Meson DW HDMI the new Rockchip SoC Rk3328 would
support external vendor PHY with DW HDMI chip.
Support this vendor PHY by adding new platform PHY ops via DW HDMI
driver and call the respective generic phy from platform driver code.
This series tested in RK3328 with 1080p (1920x1080) resolution.
Patch 0001/0005: Support Vendor PHY
Patch 0006/0008: VOP extension for win, dsp offsets
Patch 0009/0010: RK3328 VOP, HDMI clocks
Patch 0011: Rockchip Inno HDMI PHY
Patch 0012: RK3328 HDMI driver
Patch 0013: RK3328 VOP driver
Patch 0014/0017: Enable HDMI Out for RK3328
Importent:
One pontential issues is that Linux HDMI out on RK3328 has effected by
this patchset as I wouldn't find any relation or clue.
[ 0.752016] Loading compiled-in X.509 certificates
[ 0.787796] inno_hdmi_phy_rk3328_clk_recalc_rate: parent 24000000
[ 0.788391] inno-hdmi-phy ff430000.phy: inno_hdmi_phy_rk3328_clk_recalc_rate
rate 148500000 vco 148500000
[ 0.798353] rockchip-drm display-subsystem: bound ff370000.vop (ops
vop_component_ops)
[ 0.799403] dwhdmi-rockchip ff3c0000.hdmi: supply avdd-0v9 not found, using
dummy regulator
[ 0.800288] rk_iommu ff373f00.iommu: Enable stall request timed out, status:
0x00004b
[ 0.801131] dwhdmi-rockchip ff3c0000.hdmi: supply avdd-1v8 not found, using
dummy regulator
[ 0.802056] rk_iommu ff373f00.iommu: Disable paging request timed out,
status: 0x00004b
[ 0.803233] dwhdmi-rockchip ff3c0000.hdmi: Detected HDMI TX controller
v2.11a with HDCP (inno_dw_hdmi_phy2)
[ 0.805355] dwhdmi-rockchip ff3c0000.hdmi: registered DesignWare HDMI I2C
bus driver
[ 0.808769] rockchip-drm display-subsystem: bound ff3c0000.hdmi (ops
dw_hdmi_rockchip_ops)
[ 0.810869] [drm] Initialized rockchip 1.0.0 20140818 for display-subsystem
on minor 0
The only way I can use Linux HDMI by disabling IOMMU or support
disable-iommu link for RK3328 via DT [1].
[1] https://www.spinics.net/lists/devicetree/msg605124.html
Is anyone aware of this issue? I did post the patches for Linux IOMMU
but seems not a proper solution. Any suggestions?
I'm not expert in HDMI/VOP, so I can't provide a suitable solution in
the kernel,
but here is the reason why we need patch to workaround the issue in the
kernel:
- The VOP driver working in U-Boot is non-IOMMU mode, and the VOP access
DDR by physical address;
- The VOP driver working in kernel with IOMMU enabled(by default), the
VOP access DDR with virtual address(by IOMMU);
- The VOP is keep working in kernel before kernel VOP driver is enabled,
and the IOMMU driver will be enabled by
the Linux PM framework, since the IOMMU is not correctly configured
at this point, the VOP will access unknown
space(the original physical address in U-Boot) convert by IOMMU;
So we need to disable the IOMMU temporary in kernel startup before VOP
driver is enabled.
Thanks,
- Kever
Thanks,
Jagan.