diff options
author | Dave Airlie <airlied@redhat.com> | 2009-12-07 16:07:28 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-12-07 19:22:31 -0500 |
commit | 746c1aa4d100f7441423050f34be79f401fbf7d4 (patch) | |
tree | 23e021bb2e9250fd03e88875b1715039f1d3da8a /drivers/gpu/drm/radeon/radeon_mode.h | |
parent | d904ef9b00a4473af16766e99f17bdbb5f0fde65 (diff) |
drm/radeon/kms: initial radeon displayport porting
This is enough to retrieve EDID and DPCP.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_mode.h')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_mode.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h index 135693d5437e..ce1cdc748f1f 100644 --- a/drivers/gpu/drm/radeon/radeon_mode.h +++ b/drivers/gpu/drm/radeon/radeon_mode.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <drm_crtc.h> | 33 | #include <drm_crtc.h> |
34 | #include <drm_mode.h> | 34 | #include <drm_mode.h> |
35 | #include <drm_edid.h> | 35 | #include <drm_edid.h> |
36 | #include <drm_dp_helper.h> | ||
36 | #include <linux/i2c.h> | 37 | #include <linux/i2c.h> |
37 | #include <linux/i2c-id.h> | 38 | #include <linux/i2c-id.h> |
38 | #include <linux/i2c-algo-bit.h> | 39 | #include <linux/i2c-algo-bit.h> |
@@ -164,10 +165,14 @@ struct radeon_pll { | |||
164 | }; | 165 | }; |
165 | 166 | ||
166 | struct radeon_i2c_chan { | 167 | struct radeon_i2c_chan { |
167 | struct drm_device *dev; | ||
168 | struct i2c_adapter adapter; | 168 | struct i2c_adapter adapter; |
169 | struct i2c_algo_bit_data algo; | 169 | struct drm_device *dev; |
170 | union { | ||
171 | struct i2c_algo_dp_aux_data dp; | ||
172 | struct i2c_algo_bit_data bit; | ||
173 | } algo; | ||
170 | struct radeon_i2c_bus_rec rec; | 174 | struct radeon_i2c_bus_rec rec; |
175 | uint8_t i2c_id; | ||
171 | }; | 176 | }; |
172 | 177 | ||
173 | /* mostly for macs, but really any system without connector tables */ | 178 | /* mostly for macs, but really any system without connector tables */ |
@@ -328,6 +333,9 @@ struct radeon_encoder { | |||
328 | struct radeon_connector_atom_dig { | 333 | struct radeon_connector_atom_dig { |
329 | uint32_t igp_lane_info; | 334 | uint32_t igp_lane_info; |
330 | bool linkb; | 335 | bool linkb; |
336 | uint16_t uc_i2c_id; | ||
337 | struct radeon_i2c_chan *dp_i2c_bus; | ||
338 | u8 dpcp[8]; | ||
331 | }; | 339 | }; |
332 | 340 | ||
333 | struct radeon_connector { | 341 | struct radeon_connector { |
@@ -344,6 +352,8 @@ struct radeon_connector { | |||
344 | void *con_priv; | 352 | void *con_priv; |
345 | bool dac_load_detect; | 353 | bool dac_load_detect; |
346 | uint16_t connector_object_id; | 354 | uint16_t connector_object_id; |
355 | /* need to keep this for display port */ | ||
356 | // | ||
347 | }; | 357 | }; |
348 | 358 | ||
349 | struct radeon_framebuffer { | 359 | struct radeon_framebuffer { |
@@ -351,6 +361,13 @@ struct radeon_framebuffer { | |||
351 | struct drm_gem_object *obj; | 361 | struct drm_gem_object *obj; |
352 | }; | 362 | }; |
353 | 363 | ||
364 | extern int radeon_dp_getsinktype(struct radeon_connector *radeon_connector); | ||
365 | extern void radeon_dp_getdpcp(struct radeon_connector *connector); | ||
366 | extern int radeon_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, | ||
367 | uint8_t write_byte, uint8_t *read_byte); | ||
368 | |||
369 | extern struct radeon_i2c_chan *radeon_i2c_create_dp(struct drm_device *dev, | ||
370 | const char *name, bool dp, u8 i2c_id); | ||
354 | extern struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev, | 371 | extern struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev, |
355 | struct radeon_i2c_bus_rec *rec, | 372 | struct radeon_i2c_bus_rec *rec, |
356 | const char *name); | 373 | const char *name); |