mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
Merge tag 'drm-misc-next-2025-02-12' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for v6.15: UAPI Changes: fourcc: - Add modifiers for MediaTek tiled formats Cross-subsystem Changes: bus: - mhi: Enable image transfer via BHIe in PBL dma-buf: - Add fast-path for single-fence merging Core Changes: atomic helper: - Allow full modeset on connector changes - Clarify semantics of allow_modeset - Clarify semantics of drm_atomic_helper_check() buddy allocator: - Fix multi-root cleanup ci: - Update IGT display: - dp: Support Extendeds Wake Timeout - dp_mst: Fix RAD-to-string conversion panic: - Encode QR code according to Fido 2.2 probe helper: - Cleanups scheduler: - Cleanups ttm: - Refactor pool-allocation code - Cleanups Driver Changes: amdxdma: - Fix error handling - Cleanups ast: - Refactor detection of transmitter chips - Refactor support of VBIOS display-mode handling - astdp: Fix connection status; Filter unsupported display modes bridge: - adv7511: Report correct capabilities - it6505: Fix HDCP V compare - sn65dsi86: Fix device IDs - Cleanups i915: - Enable Extendeds Wake Timeout imagination: - Check job dependencies with DRM-sched helper ivpu: - Improve command-queue handling - Use workqueue for IRQ handling - Add suport for HW fault injection - Locking fixes - Cleanups mgag200: - Add support for G200eH5 chips msm: - dpu: Add concurrent writeback support for DPU 10.x+ nouveau: - Move drm_slave_encoder interface into driver - nvkm: Refactor GSP RPC omapdrm: - Cleanups panel: - Convert several panels to multi-style functions to improve error handling - edp: Add support for B140UAN04.4, BOE NV140FHM-NZ, CSW MNB601LS1-3, LG LP079QX1-SP0V, MNE007QS3-7, STA 116QHD024002, Starry 116KHD024006, Lenovo T14s Gen6 Snapdragon - himax-hx83102: Add support for CSOT PNA957QT1-1, Kingdisplay kd110n11-51ie, Starry 2082109qfh040022-50e panthor: - Expose sizes of intenral BOs via fdinfo - Fix race between reset and suspend - Cleanups qaic: - Add support for AIC200 - Cleanups renesas: - Fix limits in DT bindings rockchip: - rk3576: Add HDMI support - vop2: Add new display modes on RK3588 HDMI0 up to 4K - Don't change HDMI reference clock rate - Fix DT bindings solomon: - Set SPI device table to silence warnings - Fix pixel and scanline encoding v3d: - Cleanups vc4: - Use drm_exec - Use dma-resv for wait-BO ioctl - Remove seqno infrastructure virtgpu: - Support partial mappings of GEM objects - Reserve VGA resources during initialization - Fix UAF in virtgpu_dma_buf_free_obj() - Add panic support vkms: - Switch to a managed modesetting pipeline - Add support for ARGB8888 xlnx: - Set correct DMA segment size - Fix error handling - Fix docs Signed-off-by: Dave Airlie <airlied@redhat.com> From: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20250212090625.GA24865@linux.fritz.box
This commit is contained in:
@@ -327,7 +327,7 @@ static int drm_bridge_connector_get_modes(struct drm_connector *connector)
|
||||
|
||||
static enum drm_mode_status
|
||||
drm_bridge_connector_mode_valid(struct drm_connector *connector,
|
||||
struct drm_display_mode *mode)
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
struct drm_bridge_connector *bridge_connector =
|
||||
to_drm_bridge_connector(connector);
|
||||
|
||||
@@ -459,6 +459,64 @@ void drm_dp_lttpr_link_train_channel_eq_delay(const struct drm_dp_aux *aux,
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_lttpr_link_train_channel_eq_delay);
|
||||
|
||||
/**
|
||||
* drm_dp_lttpr_wake_timeout_setup() - Grant extended time for sink to wake up
|
||||
* @aux: The DP AUX channel to use
|
||||
* @transparent_mode: This is true if lttpr is in transparent mode
|
||||
*
|
||||
* This function checks if the sink needs any extended wake time, if it does
|
||||
* it grants this request. Post this setup the source device can keep trying
|
||||
* the Aux transaction till the granted wake timeout.
|
||||
* If this function is not called all Aux transactions are expected to take
|
||||
* a default of 1ms before they throw an error.
|
||||
*/
|
||||
void drm_dp_lttpr_wake_timeout_setup(struct drm_dp_aux *aux, bool transparent_mode)
|
||||
{
|
||||
u8 val = 1;
|
||||
int ret;
|
||||
|
||||
if (transparent_mode) {
|
||||
static const u8 timeout_mapping[] = {
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_1_MS] = 1,
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_20_MS] = 20,
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_40_MS] = 40,
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_60_MS] = 60,
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_80_MS] = 80,
|
||||
[DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_100_MS] = 100,
|
||||
};
|
||||
|
||||
ret = drm_dp_dpcd_readb(aux, DP_EXTENDED_DPRX_SLEEP_WAKE_TIMEOUT_REQUEST, &val);
|
||||
if (ret != 1) {
|
||||
drm_dbg_kms(aux->drm_dev,
|
||||
"Failed to read Extended sleep wake timeout request\n");
|
||||
return;
|
||||
}
|
||||
|
||||
val = (val < sizeof(timeout_mapping) && timeout_mapping[val]) ?
|
||||
timeout_mapping[val] : 1;
|
||||
|
||||
if (val > 1)
|
||||
drm_dp_dpcd_writeb(aux,
|
||||
DP_EXTENDED_DPRX_SLEEP_WAKE_TIMEOUT_GRANT,
|
||||
DP_DPRX_SLEEP_WAKE_TIMEOUT_PERIOD_GRANTED);
|
||||
} else {
|
||||
ret = drm_dp_dpcd_readb(aux, DP_PHY_REPEATER_EXTENDED_WAIT_TIMEOUT, &val);
|
||||
if (ret != 1) {
|
||||
drm_dbg_kms(aux->drm_dev,
|
||||
"Failed to read Extended sleep wake timeout request\n");
|
||||
return;
|
||||
}
|
||||
|
||||
val = (val & DP_EXTENDED_WAKE_TIMEOUT_REQUEST_MASK) ?
|
||||
(val & DP_EXTENDED_WAKE_TIMEOUT_REQUEST_MASK) * 10 : 1;
|
||||
|
||||
if (val > 1)
|
||||
drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_EXTENDED_WAIT_TIMEOUT,
|
||||
DP_EXTENDED_WAKE_TIMEOUT_GRANT);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_lttpr_wake_timeout_setup);
|
||||
|
||||
u8 drm_dp_link_rate_to_bw_code(int link_rate)
|
||||
{
|
||||
switch (link_rate) {
|
||||
|
||||
@@ -171,18 +171,30 @@ static const char *drm_dp_mst_sideband_tx_state_str(int state)
|
||||
return sideband_reason_str[state];
|
||||
}
|
||||
|
||||
static inline u8
|
||||
drm_dp_mst_get_ufp_num_at_lct_from_rad(u8 lct, const u8 *rad)
|
||||
{
|
||||
int idx = (lct / 2) - 1;
|
||||
int shift = (lct % 2) ? 0 : 4;
|
||||
u8 ufp_num;
|
||||
|
||||
/* mst_primary, it's rad is unset*/
|
||||
if (lct == 1)
|
||||
return 0;
|
||||
|
||||
ufp_num = (rad[idx] >> shift) & 0xf;
|
||||
|
||||
return ufp_num;
|
||||
}
|
||||
|
||||
static int
|
||||
drm_dp_mst_rad_to_str(const u8 rad[8], u8 lct, char *out, size_t len)
|
||||
{
|
||||
int i;
|
||||
u8 unpacked_rad[16];
|
||||
u8 unpacked_rad[16] = {};
|
||||
|
||||
for (i = 0; i < lct; i++) {
|
||||
if (i % 2)
|
||||
unpacked_rad[i] = rad[i / 2] >> 4;
|
||||
else
|
||||
unpacked_rad[i] = rad[i / 2] & BIT_MASK(4);
|
||||
}
|
||||
for (i = 0; i < lct; i++)
|
||||
unpacked_rad[i] = drm_dp_mst_get_ufp_num_at_lct_from_rad(i + 1, rad);
|
||||
|
||||
/* TODO: Eventually add something to printk so we can format the rad
|
||||
* like this: 1.2.3
|
||||
@@ -2544,9 +2556,8 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
|
||||
if (!mstb)
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < lct - 1; i++) {
|
||||
int shift = (i % 2) ? 0 : 4;
|
||||
int port_num = (rad[i / 2] >> shift) & 0xf;
|
||||
for (i = 1; i < lct; i++) {
|
||||
int port_num = drm_dp_mst_get_ufp_num_at_lct_from_rad(i + 1, rad);
|
||||
|
||||
list_for_each_entry(port, &mstb->ports, next) {
|
||||
if (port->port_num == port_num) {
|
||||
|
||||
@@ -542,7 +542,7 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_hdmi_check);
|
||||
*/
|
||||
enum drm_mode_status
|
||||
drm_hdmi_connector_mode_valid(struct drm_connector *connector,
|
||||
struct drm_display_mode *mode)
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
unsigned long long clock;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user