hc
2023-02-17 557c24d082b6ecb9bfe5407b77ae43fa7650a5dc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#ifndef _ROCKCHIP_CONNECTOR_H_
#define _ROCKCHIP_CONNECTOR_H_
 
#include "rockchip_bridge.h"
#include "rockchip_panel.h"
 
struct rockchip_connector {
   struct udevice *dev;
   struct rockchip_bridge *bridge;
   struct rockchip_panel *panel;
   struct rockchip_phy *phy;
   struct list_head head;
   int id;
   int type;
 
   const struct rockchip_connector_funcs *funcs;
   void *data;
};
 
struct rockchip_connector_funcs {
   /*
    * pre init connector, prepare some parameter out_if, this will be
    * used by rockchip_display.c and vop
    */
   int (*pre_init)(struct rockchip_connector *connector, struct display_state *state);
 
   /*
    * init connector, prepare resource to ensure
    * detect and get_timing can works
    */
   int (*init)(struct rockchip_connector *connector, struct display_state *state);
 
   void (*deinit)(struct rockchip_connector *connector, struct display_state *state);
   /*
    * Optional, if connector not support hotplug,
    * Returns:
    *   0 means disconnected, else means connected
    */
   int (*detect)(struct rockchip_connector *connector, struct display_state *state);
   /*
    * Optional, if implement it, need fill the timing data:
    *     state->conn_state->mode
    * you can refer to the rockchip_display: display_get_timing(),
    * Returns:
    *   0 means success, else means failed
    */
   int (*get_timing)(struct rockchip_connector *connector, struct display_state *state);
   /*
    * Optional, if implement it, need fill the edid data:
    *     state->conn_state->edid
    * Returns:
    *   0 means success, else means failed
    */
   int (*get_edid)(struct rockchip_connector *connector, struct display_state *state);
   /*
    * call before crtc enable.
    */
   int (*prepare)(struct rockchip_connector *connector, struct display_state *state);
   /*
    * call after crtc enable
    */
   int (*enable)(struct rockchip_connector *connector, struct display_state *state);
   int (*disable)(struct rockchip_connector *connector, struct display_state *state);
   void (*unprepare)(struct rockchip_connector *connector, struct display_state *state);
 
   int (*check)(struct rockchip_connector *connector, struct display_state *state);
   int (*mode_valid)(struct rockchip_connector *connector, struct display_state *state);
};
 
const struct rockchip_connector *
rockchip_get_connector(const void *blob, int connector_node);
int rockchip_connector_bind(struct rockchip_connector *connector, struct udevice *dev, int id,
               const struct rockchip_connector_funcs *funcs, void *data, int type);
struct rockchip_connector *get_rockchip_connector_by_device(struct udevice *dev);
int rockchip_connector_pre_init(struct display_state *state);
int rockchip_connector_init(struct display_state *state);
int rockchip_connector_deinit(struct display_state *state);
bool rockchip_connector_detect(struct display_state *state);
int rockchip_connector_get_timing(struct display_state *state);
int rockchip_connector_get_edid(struct display_state *state);
int rockchip_connector_pre_enable(struct display_state *state);
int rockchip_connector_enable(struct display_state *state);
int rockchip_connector_disable(struct display_state *state);
int rockchip_connector_post_disable(struct display_state *state);
 
#ifdef CONFIG_DRM_ROCKCHIP_ANALOGIX_DP
struct rockchip_dp_chip_data;
extern const struct rockchip_connector_funcs rockchip_analogix_dp_funcs;
extern const struct rockchip_dp_chip_data rk3399_analogix_edp_drv_data;
extern const struct rockchip_dp_chip_data rk3368_analogix_edp_drv_data;
extern const struct rockchip_dp_chip_data rk3288_analogix_dp_drv_data;
#endif
#endif