aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_mode.h
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-10-04 17:13:01 -0400
committerDave Airlie <airlied@redhat.com>2010-10-05 21:46:26 -0400
commitba032a58d1f320039e7850fb6e8651695c1aa571 (patch)
treef883a015e10d00b79505d16682d504e6914118e8 /drivers/gpu/drm/radeon/radeon_mode.h
parent48dfaaeb6637240af3089bf9b7a00a6cf24e0182 (diff)
drm/radeon/kms: rework spread spectrum handling
This patch reworks spread spectrum handling to enable it properly on lvds and DP/eDP links. It also fixes several bugs in the old spread spectrum code. - Use the ss recommended reference divider if available when calculating the pll - Use the proper ss command tables on pre-DCE3 asics - Avoid reading past the end of the ss info tables - Enable ss on evergreen asics (lvds, dp, tmds) - Enable ss on DP/eDP links Signed-off-by: Alex Deucher <alexdeucher@gmail.com> 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.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index 29f551769aa..d25cf093c84 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -324,21 +324,24 @@ struct radeon_encoder_ext_tmds {
324struct radeon_atom_ss { 324struct radeon_atom_ss {
325 uint16_t percentage; 325 uint16_t percentage;
326 uint8_t type; 326 uint8_t type;
327 uint8_t step; 327 uint16_t step;
328 uint8_t delay; 328 uint8_t delay;
329 uint8_t range; 329 uint8_t range;
330 uint8_t refdiv; 330 uint8_t refdiv;
331 /* asic_ss */
332 uint16_t rate;
333 uint16_t amount;
331}; 334};
332 335
333struct radeon_encoder_atom_dig { 336struct radeon_encoder_atom_dig {
334 bool linkb; 337 bool linkb;
335 /* atom dig */ 338 /* atom dig */
336 bool coherent_mode; 339 bool coherent_mode;
337 int dig_encoder; /* -1 disabled, 0 DIGA, 1 DIGB */ 340 int dig_encoder; /* -1 disabled, 0 DIGA, 1 DIGB, etc. */
338 /* atom lvds */ 341 /* atom lvds/edp */
339 uint32_t lvds_misc; 342 uint32_t lcd_misc;
340 uint16_t panel_pwr_delay; 343 uint16_t panel_pwr_delay;
341 struct radeon_atom_ss *ss; 344 uint32_t lcd_ss_id;
342 /* panel mode */ 345 /* panel mode */
343 struct drm_display_mode native_mode; 346 struct drm_display_mode native_mode;
344}; 347};
@@ -480,6 +483,13 @@ extern int radeon_ddc_get_modes(struct radeon_connector *radeon_connector);
480 483
481extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector); 484extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector);
482 485
486extern bool radeon_atombios_get_ppll_ss_info(struct radeon_device *rdev,
487 struct radeon_atom_ss *ss,
488 int id);
489extern bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev,
490 struct radeon_atom_ss *ss,
491 int id, u32 clock);
492
483extern void radeon_compute_pll(struct radeon_pll *pll, 493extern void radeon_compute_pll(struct radeon_pll *pll,
484 uint64_t freq, 494 uint64_t freq,
485 uint32_t *dot_clock_p, 495 uint32_t *dot_clock_p,