AngeloGioacchino Del Regno
6841f6f9c6
drm/mediatek: gamma: Add support for MT8195
...
Now that this driver supports 12-bit LUTs, we can add support for the
DISP_GAMMA found on the MT8195 SoC: add its driver data and compatible.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-12-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:22:37 +00:00
AngeloGioacchino Del Regno
af0e042e16
drm/mediatek: gamma: Add support for 12-bit LUT
...
New SoCs, like MT8195, not only may support bigger lookup tables, but
have got a different register layout to support bigger precision:
support specifying the number of `lut_bits` for each SoC and use it
in mtk_gamma_set_common() to perform the right calculations and add
support for 12-bit gamma lookup tables.
While at it, also reorder the variables in mtk_gamma_set_common()
and rename `lut_base` to `lut0_base` to improve readability.
Reviewed-by: Jason-JH.Lin <jason-jh.lin@mediatek.com >
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com >
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-11-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:21:06 +00:00
AngeloGioacchino Del Regno
4708b01a49
drm/mediatek: gamma: Support multi-bank gamma LUT
...
Newer Gamma IP have got multiple LUT banks: support specifying the
size of the LUT banks and handle bank-switching before programming
the LUT in mtk_gamma_set_common() in preparation for adding support
for MT8195 and newer SoCs.
Suggested-by: Jason-JH.Lin <jason-jh.lin@mediatek.com >
[Angelo: Refactored original commit]
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-10-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:19:13 +00:00
AngeloGioacchino Del Regno
a6b39cd248
drm/mediatek: De-commonize disp_aal/disp_gamma gamma_set functions
...
In preparation for adding a 12-bits gamma support for the DISP_GAMMA
IP, remove the mtk_gamma_set_common() function and move the relevant
bits in mtk_gamma_set() for DISP_GAMMA and mtk_aal_gamma_set() for
DISP_AAL: since the latter has no more support for gamma manipulation
(being moved to a different IP) in newer revisions, those functions
are about to diverge and it makes no sense to keep a common one (with
all the complications of passing common data and making exclusions
for device driver data) for just a few bits.
This commit brings no functional changes.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-9-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:10:36 +00:00
Hamza Mahfooz
88630e91f1
drm/edid: add 8 bpc quirk to the BenQ GW2765
...
The BenQ GW2765 reports that it supports higher (> 8) bpc modes, but
when trying to set them we end up with a black screen. So, limit it to 8
bpc modes.
Cc: stable@vger.kernel.org # 6.5+
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2610
Reviewed-by: Harry Wentland <harry.wentland@amd.com >
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231012184927.133137-1-hamza.mahfooz@amd.com
2023-10-16 11:08:49 -04:00
AngeloGioacchino Del Regno
36e5da1377
drm/mediatek: aal: Use bitfield macros
...
Make the code more robust and improve readability by using bitfield
macros instead of open coding bit operations.
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com >
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-8-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:06:02 +00:00
AngeloGioacchino Del Regno
6e46998c13
drm/mediatek: gamma: Use bitfield macros
...
Make the code more robust and improve readability by using bitfield
macros instead of open coding bit operations.
Reviewed-by: Jason-JH.Lin <jason-jh.lin@mediatek.com >
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com >
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-7-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 15:04:03 +00:00
AngeloGioacchino Del Regno
0d4caaaf61
drm/mediatek: gamma: Enable the Gamma LUT table only after programming
...
Move the write to DISP_GAMMA_CFG to enable the Gamma LUT to after
programming the actual table to avoid potential visual glitches during
table modification.
Note:
GAMMA should get enabled in between vblanks, but this requires many
efforts in order to make this happen, as that requires migrating all
of the writes to make use of CMDQ instead of cpu writes and that's
not trivial. For this reason, this patch only moves the LUT enable.
The CMDQ rework will come at a later time.
Reviewed-by: Jason-JH.Lin <jason-jh.lin@mediatek.com >
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com >
Reviewed-by: CK Hu <ck.hu@mediatek.com >
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com >
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-6-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org >
2023-10-16 14:59:14 +00:00
Konrad Dybcio
b998684618
drm/msm/a6xx: Fix up QMP handling
...
The commit referenced in the Fixes tag had a couple problems (as
pointed out by Dan):
- qmp_put was never called, resulting in refcnt leaks
- failling to acquire the QMP mailbox on A7xx would not undo the probe
function properly
- the qmp_put call present in the code was unreachable
Fix all of these issues.
Reported-by: Dan Carpenter <dan.carpenter@linaro.org >
Fixes: 88a0997f2f ("drm/msm/a6xx: Send ACD state to QMP at GMU resume")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org >
Patchwork: https://patchwork.freedesktop.org/patch/562761/
Signed-off-by: Rob Clark <robdclark@chromium.org >
2023-10-16 07:29:42 -07:00
Dmitry Baryshkov
5e05be7826
drm/msm/dsi: free TX buffer in unbind
...
If the drm/msm init code gets an error during output modeset
initialisation, the kernel will report an error regarding DRM memory
manager not being clean during shutdown. This is because
msm_dsi_modeset_init() allocates a piece of GEM memory for the TX
buffer, but destruction of the buffer happens only at
msm_dsi_host_destroy(), which is called during DSI driver's remove()
time, much later than the DRM MM shutdown.
To solve this issue, move the TX buffer destruction to dsi_unbind(), so
that the buffer is destructed at the correct time. Note, we also have to
store a reference to the address space, because priv->kms->aspace is
cleared before components are unbound.
Reported-by: Bjorn Andersson <andersson@kernel.org >
Fixes: 8f59ee9a57 ("drm/msm/dsi: Adjust probe order")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org >
Patchwork: https://patchwork.freedesktop.org/patch/562238/
Signed-off-by: Rob Clark <robdclark@chromium.org >
2023-10-16 07:27:33 -07:00
Dmitry Baryshkov
69b321b2c3
drm/msm/dsi: use msm_gem_kernel_put to free TX buffer
...
Use exiting function to free the allocated GEM object instead of
open-coding it. This has a bonus of internally calling
msm_gem_put_vaddr() to compensate for msm_gem_get_vaddr() in
msm_get_kernel_new().
Fixes: 1e29dff004 ("drm/msm: Add a common function to free kernel buffer objects")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org >
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com >
Patchwork: https://patchwork.freedesktop.org/patch/562239/
Signed-off-by: Rob Clark <robdclark@chromium.org >
2023-10-16 07:27:33 -07:00
Imre Deak
02c8d561db
drm/i915/dp: Remove unused DSC caps from intel_dp
...
The previous patches converted all users of the DSC DPCD caps to look
these up from the connector, so remove the version stored in intel_dp.
A follow-up patchset will read out the MST connector specific
capabilities in intel_dp_add_mst_connector() ->
intel_dp_mst_read_decompression_port_dsc_caps().
v2:
- Rebased on intel_edp_get_dsc_sink_cap() addition in the patchset.
v3:
- Rebased on read-out fix for eDP in the patchset.
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com > (v1)
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231011171606.2540078-3-imre.deak@intel.com
2023-10-16 17:01:58 +03:00
Imre Deak
d19daffc89
drm/i915/dp_mst: Use connector DSC DPCD in intel_dp_mst_mode_valid_ctx()
...
Use the connector's DSC DPCD capabilities in
intel_dp_mst_mode_valid_ctx().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-19-imre.deak@intel.com
2023-10-16 17:01:53 +03:00
Imre Deak
2bd3d20ffa
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_compute_config()
...
Use the connector's DSC DPCD capabilities in
intel_dp_dsc_compute_config().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-18-imre.deak@intel.com
2023-10-16 17:01:48 +03:00
Imre Deak
031c19b52c
drm/i915/dp: Use connector DSC DPCD in intel_dp_mode_valid()
...
Use the connector's DSC DPCD capabilities in intel_dp_mode_valid().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-17-imre.deak@intel.com
2023-10-16 17:01:41 +03:00
Imre Deak
7bca1b801e
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_get_slice_count()
...
Use the connector's DSC DPCD capabilities in
intel_dp_dsc_get_slice_count().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-16-imre.deak@intel.com
2023-10-16 17:01:38 +03:00
Imre Deak
926b726c3d
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_supports_format()
...
Use the connector's DSC DPCD capabilities in
intel_dp_dsc_supports_format().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-15-imre.deak@intel.com
2023-10-16 17:01:33 +03:00
Imre Deak
2c4907c2e6
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_compute_params()
...
Use the connector's DSC DPCD capabilities in
intel_dp_dsc_compute_params().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-14-imre.deak@intel.com
2023-10-16 17:01:29 +03:00
Imre Deak
11a33d6b26
drm/i915/dp: Pass only the required DSC DPCD to intel_dp_sink_dsc_version_minor()
...
intel_dp_sink_dsc_version_minor() only requires the DSC DPCD, so pass
only this to the function.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-13-imre.deak@intel.com
2023-10-16 17:01:25 +03:00
Imre Deak
6a60a8fa7c
drm/i915/dp: Pass only the required i915 to intel_dp_source_dsc_version_minor()
...
intel_dp_source_dsc_version_minor() only requires the i915 pointer, so pass
only this to the function.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-12-imre.deak@intel.com
2023-10-16 17:01:22 +03:00
Imre Deak
cc81951d9a
drm/i915/dp: Pass connector DSC DPCD to drm_dp_dsc_sink_supported_input_bpcs()
...
Use the connector's DSC DPCD capabilities in
drm_dp_dsc_sink_supported_input_bpcs().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-11-imre.deak@intel.com
2023-10-16 17:01:17 +03:00
Imre Deak
bb414c941b
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_max_sink_compressed_bppx16()
...
Use the connector's DSC DPCD capabilities in
intel_dp_dsc_max_sink_compressed_bppx16().
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-10-imre.deak@intel.com
2023-10-16 17:01:12 +03:00
Imre Deak
0d8665e068
drm/i915/dp: Use connector DSC DPCD in intel_dp_supports_dsc()
...
Use the connector's DSC DPCD capabilities in intel_dp_supports_dsc().
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-9-imre.deak@intel.com
2023-10-16 17:01:07 +03:00
Imre Deak
987c945ab2
drm/i915/dp: Use connector DSC DPCD in intel_dp_supports_fec()
...
Use the connector's DSC DPCD capabilities in intel_dp_supports_fec().
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-8-imre.deak@intel.com
2023-10-16 17:01:02 +03:00
Imre Deak
f52bbfe2ac
drm/i915/dp: Use connector DSC DPCD in intel_dp_dsc_compute_max_bpp()
...
Use the connector's DSC DPCD capabilities in intel_dp_dsc_compute_max_bpp()
instead of the version stored in the encoder.
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-7-imre.deak@intel.com
2023-10-16 17:00:58 +03:00
Imre Deak
102c8013b6
drm/i915/dp: Use connector DSC DPCD in i915_dsc_fec_support_show()
...
Use the connector's DSC DPCD capabilities in i915_dsc_fec_support_show()
instead of the version stored in the encoder. Atm the two are identical,
but a follow-up patch will store the (MST) connector specific version
in the connector.
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-6-imre.deak@intel.com
2023-10-16 17:00:53 +03:00
Imre Deak
829d8a1943
drm/i915/dp: Use i915/intel connector local variables in i915_dsc_fec_support_show()
...
Cache the i915 specific device and connector pointers in
i915_dsc_fec_support_show().
v2:
- s/Cahce/Cache typo in commit log. (Stan)
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231006133727.1822579-5-imre.deak@intel.com
2023-10-16 17:00:45 +03:00
Imre Deak
808b43fa7e
drm/i915/dp_mst: Set connector DSC capabilities and decompression AUX
...
Similarly to eDP and SST-DP connectors read out the DSC capabilities for
MST connectors as well. Atm these will match the root port's DSC caps
and only used after a follow-up change enables the decompression for
each stream separately (vs. the current way of enabling it only globally
in the first branch device downstream of the root port).
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231010112504.2156789-3-imre.deak@intel.com
2023-10-16 17:00:36 +03:00
Imre Deak
7389829f21
drm/i915/dp: Store DSC DPCD capabilities in the connector
...
In an MST topology the DSC capabilities are specific to each connector,
retrieved either from the sink if it decompresses the stream, or from a
branch device between the source and the sink in case this branch device
does the decompression. Accordingly each connector needs to cache its
own DSC DPCD and FEC capabilities, along with the AUX device through
which the decompression can be enabled. This patch prepares for that by
storing the capabilities and the DSC AUX device in the connector, for
now these just matching the version stored in intel_dp. The follow-up
patches will convert all users to look up these in the connector instead
of intel_dp, after which the intel_dp copies are removed.
v2:
- Rebased on intel_edp_get_dsc_sink_cap() addition in previous patch.
v3:
- Rebased on read-out fix for eDP in previous patch.
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com > (v1)
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231011171606.2540078-2-imre.deak@intel.com
2023-10-16 17:00:31 +03:00
Imre Deak
90780a633c
drm/i915/dp: Sanitize DPCD revision check in intel_dp_get_dsc_sink_cap()
...
Check only the eDP or the DP specific DPCD revision depending on the
sink type. Pass the corresponding revision to the function, which allows
getting the DSC caps of a branch device (in an MST topology, which has
its own DPCD and so DPCD revision).
While at it use DP_DPCD_REV_14 instead of open coding it and for clarity
add a separate function to read out the DSC capability on eDP.
v2:
- Use DP_DPCD_REV_14 instead of open coding it. (Stan)
- Check EDP_DCPD_REV/DPCD_REV in a clearer way. (Ville)
v3:
- Fix the read-out for eDP in intel_dp_detect().
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com > (v1)
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com > (v2)
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231011171606.2540078-1-imre.deak@intel.com
2023-10-16 17:00:22 +03:00
Andy Yan
dc00748adc
drm/rockchip: remove NR_LAYERS macro on vop2
...
There are 8 layers on rk3588, so a fix defined macro is
not appropriate.
Signed-off-by: Andy Yan <andy.yan@rock-chips.com >
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de >
Signed-off-by: Heiko Stuebner <heiko@sntech.de >
Link: https://patchwork.freedesktop.org/patch/msgid/20231013122051.1594164-1-andyshrk@163.com
2023-10-16 15:05:24 +02:00
Andy Yan
ac1c11c23f
drm/rockchip: remove unused struct in vop2
...
These structs are undefined and un used.
Fixes: 604be85547 ("drm/rockchip: Add VOP2 driver")
Signed-off-by: Andy Yan <andy.yan@rock-chips.com >
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de >
Signed-off-by: Heiko Stuebner <heiko@sntech.de >
Link: https://patchwork.freedesktop.org/patch/msgid/20231013122036.1594090-1-andyshrk@163.com
2023-10-16 15:05:23 +02:00
Dan Carpenter
6471da5ee3
drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map()
...
The "ret" variable is declared as ssize_t and it can hold negative error
codes but the "rk_obj->base.size" variable is type size_t. This means
that when we compare them, they are both type promoted to size_t and the
negative error code becomes a high unsigned value and is treated as
success. Add a cast to fix this.
Fixes: 38f993b7c5 ("drm/rockchip: Do not use DMA mapping API if attached to IOMMU domain")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org >
Signed-off-by: Heiko Stuebner <heiko@sntech.de >
Link: https://patchwork.freedesktop.org/patch/msgid/2bfa28b5-145d-4b9e-a18a-98819dd686ce@moroto.mountain
2023-10-16 15:05:14 +02:00
Karolina Stolarek
3b401e30c2
drm/ttm: Reorder sys manager cleanup step
...
With the current cleanup flow, we could trigger a NULL pointer
dereference if there is a delayed destruction of a BO with a
system resource that gets executed on drain_workqueue() call,
as we attempt to free a resource using an already released
resource manager.
Remove the device from the device list and drain its workqueue
before releasing the system domain manager in ttm_device_fini().
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20231016121525.2237838-1-karolina.stolarek@intel.com
Signed-off-by: Christian König <christian.koenig@amd.com >
2023-10-16 14:27:27 +02:00
Geert Uytterhoeven
1399ebacbf
drm: renesas: shmobile: Add DT support
...
Add DT support, by:
1. Creating a panel bridge from DT, and attaching it to the encoder,
2. Replacing the custom connector with a bridge connector,
3. Obtaining clock configuration based on the compatible value.
Note that for now the driver uses a fixed clock configuration selecting
the bus clock, as the current code to select other clock inputs needs
changes to support any other SoCs than SH7724.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/6185ab76aa300fa402e4f6610b2109665f2d8a1c.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:48 +02:00
Geert Uytterhoeven
b2b2f7ba8f
drm: renesas: shmobile: Atomic conversion part 3
...
Complete the conversion to atomic mode setting by converting the
connector, and setting the DRIVER_ATOMIC flag.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/042f9ff076c4b1c87235c74c8b76c9d161e126ec.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:48 +02:00
Geert Uytterhoeven
7c2d79f06e
drm: renesas: shmobile: Remove internal CRTC state tracking
...
Now the suspend/resume methods no longer need to look at internal driver
state, the dpms and started fields in the shmob_drm_crtc structure can
be removed, as well as the shmob_drm_crtc_dpms() wrapper. After this,
shmob_drm_crtc_atomic_{en,dis}able() became just wrappers around
shmob_drm_crtc_st{art,op}(), so inline the latter.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/905b9ca72f43d40438c8cb1199cde140eb123204.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
cc2c954668
drm: renesas: shmobile: Use suspend/resume helpers
...
Replace the custom suspend/resume handling by calls into
drm_mode_config_helper_{suspend,resume}().
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/a52147ca6033e0a59675f37f0326c7404fc5919c.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
e3c8898b38
drm: renesas: shmobile: Atomic conversion part 2
...
Implement atomic mode setting for the CRTC, using the existing dpms
callback.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/ca2a00200ef5ac899a6131087d0a30de1c806119.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
4afa041043
drm: renesas: shmobile: Atomic conversion part 1
...
Implement atomic mode setting for both the primary and overlay planes.
This involves:
- Moving the primary plane handling code from CRTC mode setting to
plane handling shared by primary and overlay planes,
- Adding basic CRTC and mode config atomic mode setting ops, which
don't do much yet.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/a6b698a1c8c1eaf631c2f928f5888ab5fe7aa4c3.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
22a4414594
drm: renesas: shmobile: Cleanup encoder
...
Most unused callbacks can be NULL pointers these days.
Drop a bunch of empty encoder callbacks.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/04f186573e1df90ecc051272f3d1cbe564c3469b.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
fbe544ffc0
drm: renesas: shmobile: Shutdown the display on remove
...
When the device is unbound from the driver, the display may be active.
Make sure it gets shut down.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/ddf2736459d59d0e961f240e77da7b0a28caae15.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
c285aac128
drm: renesas: shmobile: Turn vblank on/off when enabling/disabling CRTC
...
The DRM core vblank handling mechanism requires drivers to forcefully
turn vblank reporting off when disabling the CRTC, and to restore the
vblank reporting status when enabling the CRTC.
Implement this using the drm_crtc_vblank_{on,off}() helpers.
Note that drm_crtc_vblank_off() must be called at startup to synchronize
the state of the vblank core code with the hardware, which is initially
disabled. This is performed at CRTC creation time, requiring vertical
blank initialization to be moved before creating CRTCs.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/e5833e5706b7792bfca8e6e56fc154a7c3e0574f.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
b1ce7fe4c4
drm: renesas: shmobile: Wait for page flip when turning CRTC off
...
Turning a CRTC off will prevent a queued page flip from ever completing,
potentially confusing userspace. Wait for queued page flips to complete
before turning the CRTC off to avoid this.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/c97d5859c43fa36043c61de28d67688ebe345092.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
a87e3159d4
drm: renesas: shmobile: Move shmob_drm_crtc_finish_page_flip()
...
Move the shmob_drm_crtc_finish_page_flip() function up, to avoid having
to move it during the modification in the next change.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/4c87bb31403d142f8f146176cb859a10a28a3601.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
03f716f61e
drm: renesas: shmobile: Use drm_crtc_handle_vblank()
...
Replace the call to the legacy drm_handle_vblank() function with a call
to the new drm_crtc_handle_vblank() helper.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/bef278cc9b7536505f41faaa2f13184d9354fa7e.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
a83d383e1f
drm: renesas: shmobile: Rename shmob_drm_plane.plane
...
Rename the "plane" member of the shmob_drm_plane subclass structure to
"base", to improve readability.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/73809d0a94f9075dd868cf567790d10f8ae61603.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
9d7bd3b12e
drm: renesas: shmobile: Rename shmob_drm_connector.connector
...
Rename the "connector" member of the shmob_drm_connector subclass
structure to "base", to improve readability.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/2382c4c796b53b5d2b24f99b85954ce632f21b90.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
5195532484
drm: renesas: shmobile: Rename shmob_drm_crtc.crtc
...
Rename the "crtc" member of the shmob_drm_crtc subclass structure to
"base", to improve readability.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/b42a32082d25bde6db7a57d8dc0d9f45820f6716.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
c228823426
drm: renesas: shmobile: Unify plane allocation
...
Unify primary and overlay plane allocation:
- Enhance shmob_drm_plane_create() so it can be used to create the
primary plane, too,
- Move overlay plane creation next to primary plane creation.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/adbc5febc0099fd1910f32a7af1c8e0f570f74b4.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00