add event thread to execute events serially from event queue. Also timeout mode is supported which allow an event be deferred to be executed at later time. Both link and phy compliant tests had been done successfully. Changes in v2: -- Fix potential deadlock by removing redundant connect_mutex -- Check and enable link clock during modeset -- Drop unused code and fix function prototypes. -- set sink power to normal operation state (D0) before DPCD read Changes in v3: -- push idle pattern at main link before timing generator off -- add timeout handles for both connect and disconnect Changes in v4: -- add ST_SUSPEND_PENDING to handles suspend/modeset test operations -- clear dp phy aux interrupt status when ERR_DPPHY_AUX error -- send segment addr during edid read -- clear bpp depth before MISC register write Changes in v5: -- add ST_SUSPENDED to fix crash at resume Changes in v6: -- at msm_dp_display_enable() do not return until resume_done to avoid kms commit timeout Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> Signed-off-by: Rob Clark <robdclark@chromium.org>
37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _DP_CTRL_H_
|
|
#define _DP_CTRL_H_
|
|
|
|
#include "dp_aux.h"
|
|
#include "dp_panel.h"
|
|
#include "dp_link.h"
|
|
#include "dp_parser.h"
|
|
#include "dp_power.h"
|
|
#include "dp_catalog.h"
|
|
|
|
struct dp_ctrl {
|
|
bool orientation;
|
|
atomic_t aborted;
|
|
u32 pixel_rate;
|
|
};
|
|
|
|
int dp_ctrl_host_init(struct dp_ctrl *dp_ctrl, bool flip);
|
|
void dp_ctrl_host_deinit(struct dp_ctrl *dp_ctrl);
|
|
int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl);
|
|
int dp_ctrl_on_stream(struct dp_ctrl *dp_ctrl);
|
|
int dp_ctrl_off(struct dp_ctrl *dp_ctrl);
|
|
void dp_ctrl_push_idle(struct dp_ctrl *dp_ctrl);
|
|
void dp_ctrl_isr(struct dp_ctrl *dp_ctrl);
|
|
void dp_ctrl_handle_sink_request(struct dp_ctrl *dp_ctrl);
|
|
struct dp_ctrl *dp_ctrl_get(struct device *dev, struct dp_link *link,
|
|
struct dp_panel *panel, struct drm_dp_aux *aux,
|
|
struct dp_power *power, struct dp_catalog *catalog,
|
|
struct dp_parser *parser);
|
|
void dp_ctrl_put(struct dp_ctrl *dp_ctrl);
|
|
|
|
#endif /* _DP_CTRL_H_ */
|