mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
![Imre Deak](/assets/img/avatar_default.png)
Disconnect TypeC PHYs during system suspend and shutdown, even with the corresponding TypeC sink still plugged to its connector, since leaving the PHY connected causes havoc at least during system resume in the presence of an Nvidia card. Note that this will only make a difference in the TypeC DP alternate mode, since in Thunderbolt alternate mode the PHY is never owned by the display engine and there is no notion of PHY ownership in legacy mode (the display engine being the only possible owner in that mode and the TypeC subsystem not having anything to do with the port in that case). Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3500 Reported-and-tested-by: Chris Chiu <chris.chiu@canonical.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Uma Shankar <uma.shankar@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210610174223.605904-1-imre.deak@intel.com
36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_TC_H__
|
|
#define __INTEL_TC_H__
|
|
|
|
#include <linux/mutex.h>
|
|
#include <linux/types.h>
|
|
|
|
struct intel_digital_port;
|
|
struct intel_encoder;
|
|
|
|
bool intel_tc_port_connected(struct intel_encoder *encoder);
|
|
void intel_tc_port_disconnect_phy(struct intel_digital_port *dig_port);
|
|
|
|
u32 intel_tc_port_get_lane_mask(struct intel_digital_port *dig_port);
|
|
u32 intel_tc_port_get_pin_assignment_mask(struct intel_digital_port *dig_port);
|
|
int intel_tc_port_fia_max_lane_count(struct intel_digital_port *dig_port);
|
|
void intel_tc_port_set_fia_lane_count(struct intel_digital_port *dig_port,
|
|
int required_lanes);
|
|
|
|
void intel_tc_port_sanitize(struct intel_digital_port *dig_port);
|
|
void intel_tc_port_lock(struct intel_digital_port *dig_port);
|
|
void intel_tc_port_unlock(struct intel_digital_port *dig_port);
|
|
void intel_tc_port_get_link(struct intel_digital_port *dig_port,
|
|
int required_lanes);
|
|
void intel_tc_port_put_link(struct intel_digital_port *dig_port);
|
|
bool intel_tc_port_ref_held(struct intel_digital_port *dig_port);
|
|
|
|
void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy);
|
|
|
|
bool intel_tc_cold_requires_aux_pw(struct intel_digital_port *dig_port);
|
|
|
|
#endif /* __INTEL_TC_H__ */
|