Subversion Repositories Kolibri OS

Rev

Rev 5179 | Rev 6104 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5179 Rev 5271
Line 36... Line 36...
36
extern void dce6_afmt_write_sad_regs(struct drm_encoder *encoder);
36
extern void dce6_afmt_write_sad_regs(struct drm_encoder *encoder);
37
extern void dce6_afmt_select_pin(struct drm_encoder *encoder);
37
extern void dce6_afmt_select_pin(struct drm_encoder *encoder);
38
extern void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
38
extern void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
39
					   struct drm_display_mode *mode);
39
					   struct drm_display_mode *mode);
Line -... Line 40...
-
 
40
 
-
 
41
/* enable the audio stream */
-
 
42
static void dce4_audio_enable(struct radeon_device *rdev,
-
 
43
			      struct r600_audio_pin *pin,
-
 
44
			      u8 enable_mask)
-
 
45
{
-
 
46
	u32 tmp = RREG32(AZ_HOT_PLUG_CONTROL);
-
 
47
 
-
 
48
	if (!pin)
-
 
49
		return;
-
 
50
 
-
 
51
	if (enable_mask) {
-
 
52
		tmp |= AUDIO_ENABLED;
-
 
53
		if (enable_mask & 1)
-
 
54
			tmp |= PIN0_AUDIO_ENABLED;
-
 
55
		if (enable_mask & 2)
-
 
56
			tmp |= PIN1_AUDIO_ENABLED;
-
 
57
		if (enable_mask & 4)
-
 
58
			tmp |= PIN2_AUDIO_ENABLED;
-
 
59
		if (enable_mask & 8)
-
 
60
			tmp |= PIN3_AUDIO_ENABLED;
-
 
61
	} else {
-
 
62
		tmp &= ~(AUDIO_ENABLED |
-
 
63
			 PIN0_AUDIO_ENABLED |
-
 
64
			 PIN1_AUDIO_ENABLED |
-
 
65
			 PIN2_AUDIO_ENABLED |
-
 
66
			 PIN3_AUDIO_ENABLED);
-
 
67
	}
-
 
68
 
-
 
69
	WREG32(AZ_HOT_PLUG_CONTROL, tmp);
-
 
70
}
40
 
71
 
41
/*
72
/*
42
 * update the N and CTS parameters for a given pixel clock rate
73
 * update the N and CTS parameters for a given pixel clock rate
43
 */
74
 */
44
static void evergreen_hdmi_update_ACR(struct drm_encoder *encoder, uint32_t clock)
75
static void evergreen_hdmi_update_ACR(struct drm_encoder *encoder, uint32_t clock)
Line 100... Line 131...
100
{
131
{
101
	struct radeon_device *rdev = encoder->dev->dev_private;
132
	struct radeon_device *rdev = encoder->dev->dev_private;
102
	struct drm_connector *connector;
133
	struct drm_connector *connector;
103
	struct radeon_connector *radeon_connector = NULL;
134
	struct radeon_connector *radeon_connector = NULL;
104
	u32 tmp;
135
	u32 tmp;
105
	u8 *sadb;
136
	u8 *sadb = NULL;
106
	int sad_count;
137
	int sad_count;
Line 107... Line 138...
107
 
138
 
108
	list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) {
139
	list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) {
109
		if (connector->encoder == encoder) {
140
		if (connector->encoder == encoder) {
Line 316... Line 347...
316
	}
347
	}
Line 317... Line 348...
317
 
348
 
318
	/* disable audio prior to setting up hw */
349
	/* disable audio prior to setting up hw */
319
	if (ASIC_IS_DCE6(rdev)) {
350
	if (ASIC_IS_DCE6(rdev)) {
320
		dig->afmt->pin = dce6_audio_get_pin(rdev);
351
		dig->afmt->pin = dce6_audio_get_pin(rdev);
321
		dce6_audio_enable(rdev, dig->afmt->pin, false);
352
		dce6_audio_enable(rdev, dig->afmt->pin, 0);
322
	} else {
353
	} else {
323
		dig->afmt->pin = r600_audio_get_pin(rdev);
354
		dig->afmt->pin = r600_audio_get_pin(rdev);
324
		r600_audio_enable(rdev, dig->afmt->pin, false);
355
		dce4_audio_enable(rdev, dig->afmt->pin, 0);
Line 325... Line 356...
325
	}
356
	}
Line 326... Line 357...
326
 
357
 
Line 461... Line 492...
461
	WREG32(AFMT_RAMP_CONTROL2 + offset, 0x00000001);
492
	WREG32(AFMT_RAMP_CONTROL2 + offset, 0x00000001);
462
	WREG32(AFMT_RAMP_CONTROL3 + offset, 0x00000001);
493
	WREG32(AFMT_RAMP_CONTROL3 + offset, 0x00000001);
Line 463... Line 494...
463
 
494
 
464
	/* enable audio after to setting up hw */
495
	/* enable audio after to setting up hw */
465
	if (ASIC_IS_DCE6(rdev))
496
	if (ASIC_IS_DCE6(rdev))
466
		dce6_audio_enable(rdev, dig->afmt->pin, true);
497
		dce6_audio_enable(rdev, dig->afmt->pin, 1);
467
	else
498
	else
468
		r600_audio_enable(rdev, dig->afmt->pin, true);
499
		dce4_audio_enable(rdev, dig->afmt->pin, 0xf);
Line 469... Line 500...
469
}
500
}
470
 
501
 
-
 
502
void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
-
 
503
{
471
void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
504
	struct drm_device *dev = encoder->dev;
472
{
505
	struct radeon_device *rdev = dev->dev_private;
Line 473... Line 506...
473
	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
506
	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
474
	struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
507
	struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
Line 480... Line 513...
480
	if (enable && dig->afmt->enabled)
513
	if (enable && dig->afmt->enabled)
481
		return;
514
		return;
482
	if (!enable && !dig->afmt->enabled)
515
	if (!enable && !dig->afmt->enabled)
483
		return;
516
		return;
Line -... Line 517...
-
 
517
 
-
 
518
	if (!enable && dig->afmt->pin) {
-
 
519
		if (ASIC_IS_DCE6(rdev))
-
 
520
			dce6_audio_enable(rdev, dig->afmt->pin, 0);
-
 
521
		else
-
 
522
			dce4_audio_enable(rdev, dig->afmt->pin, 0);
-
 
523
		dig->afmt->pin = NULL;
-
 
524
	}
484
 
525
 
Line 485... Line 526...
485
	dig->afmt->enabled = enable;
526
	dig->afmt->enabled = enable;
486
 
527
 
487
	DRM_DEBUG("%sabling HDMI interface @ 0x%04X for encoder 0x%x\n",
528
	DRM_DEBUG("%sabling HDMI interface @ 0x%04X for encoder 0x%x\n",