OpenCloudOS-Kernel/drivers/gpu/host1x
Thierry Reding 5a5fccbd8c gpu: host1x: Introduce support for wide opcodes
The CDMA push buffer can currently only handle opcodes that take a
single word parameter. However, the host1x implementation on Tegra186
and later supports opcodes that require multiple words as parameters.

Unfortunately the way the push buffer is structured, these wide opcodes
cannot simply be composed of two regular opcodes because that could
result in the wide opcode being split across the end of the push buffer
and the final RESTART opcode required to wrap the push buffer around
would break the wide opcode.

One way to fix this would be to remove the concept of slots to simplify
push buffer operations. However, that's not entirely trivial and should
be done in a separate patch. For now, simply use a different function
to push four-word opcodes into the push buffer. Technically only three
words are pushed, with the fourth word used as padding to preserve the
2-word alignment required by the slots abstraction. The fourth word is
always a NOP opcode.

Additional care must be taken when the end of the push buffer is
reached. If a four-word opcode doesn't fit into the push buffer without
being split by the boundary, NOP opcodes will be introduced and the new
wide opcode placed at the beginning of the push buffer.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2019-02-07 18:28:35 +01:00
..
hw gpu: host1x: Program the channel stream ID 2019-02-07 18:28:33 +01:00
Kconfig gpu: host1x: select IOMMU_IOVA 2017-05-18 10:41:28 -04:00
Makefile gpu: host1x: Add Tegra194 support 2018-11-29 17:11:49 +01:00
bus.c gpu: host1x: Represent host1x bus devices in debugfs 2019-02-04 08:35:54 +01:00
bus.h gpu: host1x: Provide a proper struct bus_type 2015-01-27 10:09:14 +01:00
cdma.c gpu: host1x: Introduce support for wide opcodes 2019-02-07 18:28:35 +01:00
cdma.h gpu: host1x: Introduce support for wide opcodes 2019-02-07 18:28:35 +01:00
channel.c gpu: host1x: Fix incorrect comment for channel_request 2017-10-20 14:19:52 +02:00
channel.h gpu: host1x: Refactor channel allocation code 2017-06-15 14:25:38 +02:00
debug.c gpu: host1x: Cleanup loop variable usage 2018-05-18 21:50:40 +02:00
debug.h gpu: host1x: Improve debug disassembly formatting 2017-10-20 14:19:52 +02:00
dev.c gpu: host1x: Set up stream ID table 2019-02-04 08:35:55 +01:00
dev.h gpu: host1x: Set up stream ID table 2019-02-04 08:35:55 +01:00
intr.c gpu: host1x: Drop unnecessary host1x argument 2018-05-18 21:51:01 +02:00
intr.h gpu: host1x: Drop unnecessary host1x argument 2018-05-18 21:51:01 +02:00
job.c gpu: host1x: Check whether size of unpin isn't 0 2018-07-09 10:31:30 +02:00
job.h gpu: host1x: Use not explicitly sized types 2018-05-18 21:51:37 +02:00
mipi.c drm/tegra: dsi: Enhance runtime power management 2016-08-24 15:58:57 +02:00
syncpt.c gpu: host1x: Drop unnecessary host1x argument 2018-05-18 21:51:01 +02:00
syncpt.h gpu: host1x: Remove wait check support 2018-05-18 21:50:04 +02:00