![Jordan Crouse](/assets/img/avatar_default.png)
The A5XX GPU powers on in "secure" mode. In secure mode the GPU can only render to buffers that are marked as secure and inaccessible to the kernel and user through a series of hardware protections. In practice secure mode is used to draw things like a UI on a secure video frame. In order to switch out of secure mode the GPU executes a special shader that clears out the GMEM and other sensitve registers and then writes a register. Because the kernel can't be trusted the shader binary is signed and verified and programmed by the secure world. To do this we need to read the MDT header and the segments from the firmware location and put them in memory and present them for approval. For targets without secure support there is an out: if the secure world doesn't support secure then there are no hardware protections and we can freely write the SECVID_TRUST register from the CPU. We don't have 100% confidence that we can query the secure capabilities at run time but we have enough calls that need to go right to give us some confidence that we're at least doing something useful. Of course if we guess wrong you trigger a permissions violation which usually ends up in a system crash but thats a problem that shows up immediately. [v2: use child device per Bjorn] [v3: use generic MDT loader per Bjorn] [v4: use managed dma functions and ifdefs for the MDT loader] [v5: Add depends for QCOM_MDT_LOADER] Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org> [robclark: fix Kconfig to use select instead of depends + #if IS_ENABLED()] Signed-off-by: Rob Clark <robdclark@gmail.com>
84 lines
2.1 KiB
Plaintext
84 lines
2.1 KiB
Plaintext
|
|
config DRM_MSM
|
|
tristate "MSM DRM"
|
|
depends on DRM
|
|
depends on ARCH_QCOM || (ARM && COMPILE_TEST)
|
|
depends on OF && COMMON_CLK
|
|
depends on MMU
|
|
select QCOM_MDT_LOADER
|
|
select REGULATOR
|
|
select DRM_KMS_HELPER
|
|
select DRM_PANEL
|
|
select SHMEM
|
|
select TMPFS
|
|
select QCOM_SCM
|
|
select SND_SOC_HDMI_CODEC if SND_SOC
|
|
select SYNC_FILE
|
|
select PM_OPP
|
|
default y
|
|
help
|
|
DRM/KMS driver for MSM/snapdragon.
|
|
|
|
config DRM_MSM_REGISTER_LOGGING
|
|
bool "MSM DRM register logging"
|
|
depends on DRM_MSM
|
|
default n
|
|
help
|
|
Compile in support for logging register reads/writes in a format
|
|
that can be parsed by envytools demsm tool. If enabled, register
|
|
logging can be switched on via msm.reglog=y module param.
|
|
|
|
config DRM_MSM_HDMI_HDCP
|
|
bool "Enable HDMI HDCP support in MSM DRM driver"
|
|
depends on DRM_MSM && QCOM_SCM
|
|
default y
|
|
help
|
|
Choose this option to enable HDCP state machine
|
|
|
|
config DRM_MSM_DSI
|
|
bool "Enable DSI support in MSM DRM driver"
|
|
depends on DRM_MSM
|
|
select DRM_PANEL
|
|
select DRM_MIPI_DSI
|
|
default y
|
|
help
|
|
Choose this option if you have a need for MIPI DSI connector
|
|
support.
|
|
|
|
config DRM_MSM_DSI_PLL
|
|
bool "Enable DSI PLL driver in MSM DRM"
|
|
depends on DRM_MSM_DSI && COMMON_CLK
|
|
default y
|
|
help
|
|
Choose this option to enable DSI PLL driver which provides DSI
|
|
source clocks under common clock framework.
|
|
|
|
config DRM_MSM_DSI_28NM_PHY
|
|
bool "Enable DSI 28nm PHY driver in MSM DRM"
|
|
depends on DRM_MSM_DSI
|
|
default y
|
|
help
|
|
Choose this option if the 28nm DSI PHY is used on the platform.
|
|
|
|
config DRM_MSM_DSI_20NM_PHY
|
|
bool "Enable DSI 20nm PHY driver in MSM DRM"
|
|
depends on DRM_MSM_DSI
|
|
default y
|
|
help
|
|
Choose this option if the 20nm DSI PHY is used on the platform.
|
|
|
|
config DRM_MSM_DSI_28NM_8960_PHY
|
|
bool "Enable DSI 28nm 8960 PHY driver in MSM DRM"
|
|
depends on DRM_MSM_DSI
|
|
default y
|
|
help
|
|
Choose this option if the 28nm DSI PHY 8960 variant is used on the
|
|
platform.
|
|
|
|
config DRM_MSM_DSI_14NM_PHY
|
|
bool "Enable DSI 14nm PHY driver in MSM DRM (used by MSM8996/APQ8096)"
|
|
depends on DRM_MSM_DSI
|
|
default y
|
|
help
|
|
Choose this option if DSI PHY on 8996 is used on the platform.
|