xref: /openbsd-src/sys/dev/pci/drm/i915/display/intel_lspcon.h (revision 5ca02815211fc20fa71222bf4e6148b043e505b3)
1c349dbc7Sjsg /* SPDX-License-Identifier: MIT */
2c349dbc7Sjsg /*
3c349dbc7Sjsg  * Copyright © 2019 Intel Corporation
4c349dbc7Sjsg  */
5c349dbc7Sjsg 
6c349dbc7Sjsg #ifndef __INTEL_LSPCON_H__
7c349dbc7Sjsg #define __INTEL_LSPCON_H__
8c349dbc7Sjsg 
9c349dbc7Sjsg #include <linux/types.h>
10c349dbc7Sjsg 
11c349dbc7Sjsg struct drm_connector;
12c349dbc7Sjsg struct drm_connector_state;
13c349dbc7Sjsg struct intel_crtc_state;
14c349dbc7Sjsg struct intel_digital_port;
15c349dbc7Sjsg struct intel_encoder;
16c349dbc7Sjsg struct intel_lspcon;
17c349dbc7Sjsg 
18ad8b1aafSjsg bool lspcon_init(struct intel_digital_port *dig_port);
19*5ca02815Sjsg void lspcon_detect_hdr_capability(struct intel_lspcon *lspcon);
20*5ca02815Sjsg void lspcon_resume(struct intel_digital_port *dig_port);
21c349dbc7Sjsg void lspcon_wait_pcon_mode(struct intel_lspcon *lspcon);
22c349dbc7Sjsg void lspcon_write_infoframe(struct intel_encoder *encoder,
23c349dbc7Sjsg 			    const struct intel_crtc_state *crtc_state,
24c349dbc7Sjsg 			    unsigned int type,
25c349dbc7Sjsg 			    const void *buf, ssize_t len);
26c349dbc7Sjsg void lspcon_read_infoframe(struct intel_encoder *encoder,
27c349dbc7Sjsg 			   const struct intel_crtc_state *crtc_state,
28c349dbc7Sjsg 			   unsigned int type,
29c349dbc7Sjsg 			   void *frame, ssize_t len);
30c349dbc7Sjsg void lspcon_set_infoframes(struct intel_encoder *encoder,
31c349dbc7Sjsg 			   bool enable,
32c349dbc7Sjsg 			   const struct intel_crtc_state *crtc_state,
33c349dbc7Sjsg 			   const struct drm_connector_state *conn_state);
34c349dbc7Sjsg u32 lspcon_infoframes_enabled(struct intel_encoder *encoder,
35c349dbc7Sjsg 			      const struct intel_crtc_state *pipe_config);
36*5ca02815Sjsg u32 intel_lspcon_infoframes_enabled(struct intel_encoder *encoder,
37*5ca02815Sjsg 				    const struct intel_crtc_state *pipe_config);
38*5ca02815Sjsg void hsw_write_infoframe(struct intel_encoder *encoder,
39*5ca02815Sjsg 			 const struct intel_crtc_state *crtc_state,
40*5ca02815Sjsg 			 unsigned int type,
41*5ca02815Sjsg 			 const void *frame, ssize_t len);
42*5ca02815Sjsg void hsw_read_infoframe(struct intel_encoder *encoder,
43*5ca02815Sjsg 			const struct intel_crtc_state *crtc_state,
44*5ca02815Sjsg 			unsigned int type,
45*5ca02815Sjsg 			void *frame, ssize_t len);
46c349dbc7Sjsg 
47c349dbc7Sjsg #endif /* __INTEL_LSPCON_H__ */
48