diff options
| -rw-r--r-- | drivers/gpu/drm/drm_edid.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/atom.c | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_combios.c | 20 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_encoders.c | 21 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 58 |
6 files changed, 63 insertions, 47 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 7e608f4a0df9..e661e4c9a193 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
| @@ -84,6 +84,8 @@ static struct edid_quirk { | |||
| 84 | 84 | ||
| 85 | /* Envision Peripherals, Inc. EN-7100e */ | 85 | /* Envision Peripherals, Inc. EN-7100e */ |
| 86 | { "EPI", 59264, EDID_QUIRK_135_CLOCK_TOO_HIGH }, | 86 | { "EPI", 59264, EDID_QUIRK_135_CLOCK_TOO_HIGH }, |
| 87 | /* Envision EN2028 */ | ||
| 88 | { "EPI", 8232, EDID_QUIRK_PREFER_LARGE_60 }, | ||
| 87 | 89 | ||
| 88 | /* Funai Electronics PM36B */ | 90 | /* Funai Electronics PM36B */ |
| 89 | { "FCM", 13600, EDID_QUIRK_PREFER_LARGE_75 | | 91 | { "FCM", 13600, EDID_QUIRK_PREFER_LARGE_75 | |
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c index 247f8ee7e940..58845e053b36 100644 --- a/drivers/gpu/drm/radeon/atom.c +++ b/drivers/gpu/drm/radeon/atom.c | |||
| @@ -1136,6 +1136,7 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32 | |||
| 1136 | int len, ws, ps, ptr; | 1136 | int len, ws, ps, ptr; |
| 1137 | unsigned char op; | 1137 | unsigned char op; |
| 1138 | atom_exec_context ectx; | 1138 | atom_exec_context ectx; |
| 1139 | int ret = 0; | ||
| 1139 | 1140 | ||
| 1140 | if (!base) | 1141 | if (!base) |
| 1141 | return -EINVAL; | 1142 | return -EINVAL; |
| @@ -1168,7 +1169,8 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32 | |||
| 1168 | if (ectx.abort) { | 1169 | if (ectx.abort) { |
| 1169 | DRM_ERROR("atombios stuck executing %04X (len %d, WS %d, PS %d) @ 0x%04X\n", | 1170 | DRM_ERROR("atombios stuck executing %04X (len %d, WS %d, PS %d) @ 0x%04X\n", |
| 1170 | base, len, ws, ps, ptr - 1); | 1171 | base, len, ws, ps, ptr - 1); |
| 1171 | return -EINVAL; | 1172 | ret = -EINVAL; |
| 1173 | goto free; | ||
| 1172 | } | 1174 | } |
| 1173 | 1175 | ||
| 1174 | if (op < ATOM_OP_CNT && op > 0) | 1176 | if (op < ATOM_OP_CNT && op > 0) |
| @@ -1183,9 +1185,10 @@ static int atom_execute_table_locked(struct atom_context *ctx, int index, uint32 | |||
| 1183 | debug_depth--; | 1185 | debug_depth--; |
| 1184 | SDEBUG("<<\n"); | 1186 | SDEBUG("<<\n"); |
| 1185 | 1187 | ||
| 1188 | free: | ||
| 1186 | if (ws) | 1189 | if (ws) |
| 1187 | kfree(ectx.ws); | 1190 | kfree(ectx.ws); |
| 1188 | return 0; | 1191 | return ret; |
| 1189 | } | 1192 | } |
| 1190 | 1193 | ||
| 1191 | int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) | 1194 | int atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) |
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c index 2becdeda68a3..37db8adb2748 100644 --- a/drivers/gpu/drm/radeon/radeon_combios.c +++ b/drivers/gpu/drm/radeon/radeon_combios.c | |||
| @@ -760,7 +760,9 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct | |||
| 760 | dac = RBIOS8(dac_info + 0x3) & 0xf; | 760 | dac = RBIOS8(dac_info + 0x3) & 0xf; |
| 761 | p_dac->ps2_pdac_adj = (bg << 8) | (dac); | 761 | p_dac->ps2_pdac_adj = (bg << 8) | (dac); |
| 762 | } | 762 | } |
| 763 | found = 1; | 763 | /* if the values are all zeros, use the table */ |
| 764 | if (p_dac->ps2_pdac_adj) | ||
| 765 | found = 1; | ||
| 764 | } | 766 | } |
| 765 | 767 | ||
| 766 | if (!found) /* fallback to defaults */ | 768 | if (!found) /* fallback to defaults */ |
| @@ -895,7 +897,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct | |||
| 895 | bg = RBIOS8(dac_info + 0x10) & 0xf; | 897 | bg = RBIOS8(dac_info + 0x10) & 0xf; |
| 896 | dac = RBIOS8(dac_info + 0x11) & 0xf; | 898 | dac = RBIOS8(dac_info + 0x11) & 0xf; |
| 897 | tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20); | 899 | tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20); |
| 898 | found = 1; | 900 | /* if the values are all zeros, use the table */ |
| 901 | if (tv_dac->ps2_tvdac_adj) | ||
| 902 | found = 1; | ||
| 899 | } else if (rev > 1) { | 903 | } else if (rev > 1) { |
| 900 | bg = RBIOS8(dac_info + 0xc) & 0xf; | 904 | bg = RBIOS8(dac_info + 0xc) & 0xf; |
| 901 | dac = (RBIOS8(dac_info + 0xc) >> 4) & 0xf; | 905 | dac = (RBIOS8(dac_info + 0xc) >> 4) & 0xf; |
| @@ -908,7 +912,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct | |||
| 908 | bg = RBIOS8(dac_info + 0xe) & 0xf; | 912 | bg = RBIOS8(dac_info + 0xe) & 0xf; |
| 909 | dac = (RBIOS8(dac_info + 0xe) >> 4) & 0xf; | 913 | dac = (RBIOS8(dac_info + 0xe) >> 4) & 0xf; |
| 910 | tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20); | 914 | tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20); |
| 911 | found = 1; | 915 | /* if the values are all zeros, use the table */ |
| 916 | if (tv_dac->ps2_tvdac_adj) | ||
| 917 | found = 1; | ||
| 912 | } | 918 | } |
| 913 | tv_dac->tv_std = radeon_combios_get_tv_info(rdev); | 919 | tv_dac->tv_std = radeon_combios_get_tv_info(rdev); |
| 914 | } | 920 | } |
| @@ -925,7 +931,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct | |||
| 925 | (bg << 16) | (dac << 20); | 931 | (bg << 16) | (dac << 20); |
| 926 | tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj; | 932 | tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj; |
| 927 | tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj; | 933 | tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj; |
| 928 | found = 1; | 934 | /* if the values are all zeros, use the table */ |
| 935 | if (tv_dac->ps2_tvdac_adj) | ||
| 936 | found = 1; | ||
| 929 | } else { | 937 | } else { |
| 930 | bg = RBIOS8(dac_info + 0x4) & 0xf; | 938 | bg = RBIOS8(dac_info + 0x4) & 0xf; |
| 931 | dac = RBIOS8(dac_info + 0x5) & 0xf; | 939 | dac = RBIOS8(dac_info + 0x5) & 0xf; |
| @@ -933,7 +941,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct | |||
| 933 | (bg << 16) | (dac << 20); | 941 | (bg << 16) | (dac << 20); |
| 934 | tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj; | 942 | tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj; |
| 935 | tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj; | 943 | tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj; |
| 936 | found = 1; | 944 | /* if the values are all zeros, use the table */ |
| 945 | if (tv_dac->ps2_tvdac_adj) | ||
| 946 | found = 1; | ||
| 937 | } | 947 | } |
| 938 | } else { | 948 | } else { |
| 939 | DRM_INFO("No TV DAC info found in BIOS\n"); | 949 | DRM_INFO("No TV DAC info found in BIOS\n"); |
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 60d59816b94f..3fba50540f72 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
| @@ -315,7 +315,7 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr | |||
| 315 | radeon_encoder = to_radeon_encoder(encoder); | 315 | radeon_encoder = to_radeon_encoder(encoder); |
| 316 | if (!radeon_encoder->enc_priv) | 316 | if (!radeon_encoder->enc_priv) |
| 317 | return 0; | 317 | return 0; |
| 318 | if (rdev->is_atom_bios) { | 318 | if (ASIC_IS_AVIVO(rdev) || radeon_r4xx_atom) { |
| 319 | struct radeon_encoder_atom_dac *dac_int; | 319 | struct radeon_encoder_atom_dac *dac_int; |
| 320 | dac_int = radeon_encoder->enc_priv; | 320 | dac_int = radeon_encoder->enc_priv; |
| 321 | dac_int->tv_std = val; | 321 | dac_int->tv_std = val; |
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c index 52d6f96f274b..c52fc3080b67 100644 --- a/drivers/gpu/drm/radeon/radeon_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_encoders.c | |||
| @@ -317,12 +317,8 @@ atombios_dac_setup(struct drm_encoder *encoder, int action) | |||
| 317 | struct radeon_device *rdev = dev->dev_private; | 317 | struct radeon_device *rdev = dev->dev_private; |
| 318 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 318 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
| 319 | DAC_ENCODER_CONTROL_PS_ALLOCATION args; | 319 | DAC_ENCODER_CONTROL_PS_ALLOCATION args; |
| 320 | int index = 0, num = 0; | 320 | int index = 0; |
| 321 | struct radeon_encoder_atom_dac *dac_info = radeon_encoder->enc_priv; | 321 | struct radeon_encoder_atom_dac *dac_info = radeon_encoder->enc_priv; |
| 322 | enum radeon_tv_std tv_std = TV_STD_NTSC; | ||
| 323 | |||
| 324 | if (dac_info->tv_std) | ||
| 325 | tv_std = dac_info->tv_std; | ||
| 326 | 322 | ||
| 327 | memset(&args, 0, sizeof(args)); | 323 | memset(&args, 0, sizeof(args)); |
| 328 | 324 | ||
| @@ -330,12 +326,10 @@ atombios_dac_setup(struct drm_encoder *encoder, int action) | |||
| 330 | case ENCODER_OBJECT_ID_INTERNAL_DAC1: | 326 | case ENCODER_OBJECT_ID_INTERNAL_DAC1: |
| 331 | case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: | 327 | case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: |
| 332 | index = GetIndexIntoMasterTable(COMMAND, DAC1EncoderControl); | 328 | index = GetIndexIntoMasterTable(COMMAND, DAC1EncoderControl); |
| 333 | num = 1; | ||
| 334 | break; | 329 | break; |
| 335 | case ENCODER_OBJECT_ID_INTERNAL_DAC2: | 330 | case ENCODER_OBJECT_ID_INTERNAL_DAC2: |
| 336 | case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: | 331 | case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: |
| 337 | index = GetIndexIntoMasterTable(COMMAND, DAC2EncoderControl); | 332 | index = GetIndexIntoMasterTable(COMMAND, DAC2EncoderControl); |
| 338 | num = 2; | ||
| 339 | break; | 333 | break; |
| 340 | } | 334 | } |
| 341 | 335 | ||
| @@ -346,7 +340,7 @@ atombios_dac_setup(struct drm_encoder *encoder, int action) | |||
| 346 | else if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) | 340 | else if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) |
| 347 | args.ucDacStandard = ATOM_DAC1_CV; | 341 | args.ucDacStandard = ATOM_DAC1_CV; |
| 348 | else { | 342 | else { |
| 349 | switch (tv_std) { | 343 | switch (dac_info->tv_std) { |
| 350 | case TV_STD_PAL: | 344 | case TV_STD_PAL: |
| 351 | case TV_STD_PAL_M: | 345 | case TV_STD_PAL_M: |
| 352 | case TV_STD_SCART_PAL: | 346 | case TV_STD_SCART_PAL: |
| @@ -377,10 +371,6 @@ atombios_tv_setup(struct drm_encoder *encoder, int action) | |||
| 377 | TV_ENCODER_CONTROL_PS_ALLOCATION args; | 371 | TV_ENCODER_CONTROL_PS_ALLOCATION args; |
| 378 | int index = 0; | 372 | int index = 0; |
| 379 | struct radeon_encoder_atom_dac *dac_info = radeon_encoder->enc_priv; | 373 | struct radeon_encoder_atom_dac *dac_info = radeon_encoder->enc_priv; |
| 380 | enum radeon_tv_std tv_std = TV_STD_NTSC; | ||
| 381 | |||
| 382 | if (dac_info->tv_std) | ||
| 383 | tv_std = dac_info->tv_std; | ||
| 384 | 374 | ||
| 385 | memset(&args, 0, sizeof(args)); | 375 | memset(&args, 0, sizeof(args)); |
| 386 | 376 | ||
| @@ -391,7 +381,7 @@ atombios_tv_setup(struct drm_encoder *encoder, int action) | |||
| 391 | if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) | 381 | if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT)) |
| 392 | args.sTVEncoder.ucTvStandard = ATOM_TV_CV; | 382 | args.sTVEncoder.ucTvStandard = ATOM_TV_CV; |
| 393 | else { | 383 | else { |
| 394 | switch (tv_std) { | 384 | switch (dac_info->tv_std) { |
| 395 | case TV_STD_NTSC: | 385 | case TV_STD_NTSC: |
| 396 | args.sTVEncoder.ucTvStandard = ATOM_TV_NTSC; | 386 | args.sTVEncoder.ucTvStandard = ATOM_TV_NTSC; |
| 397 | break; | 387 | break; |
| @@ -1558,12 +1548,14 @@ static const struct drm_encoder_funcs radeon_atom_enc_funcs = { | |||
| 1558 | struct radeon_encoder_atom_dac * | 1548 | struct radeon_encoder_atom_dac * |
| 1559 | radeon_atombios_set_dac_info(struct radeon_encoder *radeon_encoder) | 1549 | radeon_atombios_set_dac_info(struct radeon_encoder *radeon_encoder) |
| 1560 | { | 1550 | { |
| 1551 | struct drm_device *dev = radeon_encoder->base.dev; | ||
| 1552 | struct radeon_device *rdev = dev->dev_private; | ||
| 1561 | struct radeon_encoder_atom_dac *dac = kzalloc(sizeof(struct radeon_encoder_atom_dac), GFP_KERNEL); | 1553 | struct radeon_encoder_atom_dac *dac = kzalloc(sizeof(struct radeon_encoder_atom_dac), GFP_KERNEL); |
| 1562 | 1554 | ||
| 1563 | if (!dac) | 1555 | if (!dac) |
| 1564 | return NULL; | 1556 | return NULL; |
| 1565 | 1557 | ||
| 1566 | dac->tv_std = TV_STD_NTSC; | 1558 | dac->tv_std = radeon_atombios_get_tv_info(rdev); |
| 1567 | return dac; | 1559 | return dac; |
| 1568 | } | 1560 | } |
| 1569 | 1561 | ||
| @@ -1641,6 +1633,7 @@ radeon_add_atom_encoder(struct drm_device *dev, uint32_t encoder_id, uint32_t su | |||
| 1641 | break; | 1633 | break; |
| 1642 | case ENCODER_OBJECT_ID_INTERNAL_DAC1: | 1634 | case ENCODER_OBJECT_ID_INTERNAL_DAC1: |
| 1643 | drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs, DRM_MODE_ENCODER_DAC); | 1635 | drm_encoder_init(dev, encoder, &radeon_atom_enc_funcs, DRM_MODE_ENCODER_DAC); |
| 1636 | radeon_encoder->enc_priv = radeon_atombios_set_dac_info(radeon_encoder); | ||
| 1644 | drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs); | 1637 | drm_encoder_helper_add(encoder, &radeon_atom_dac_helper_funcs); |
| 1645 | break; | 1638 | break; |
| 1646 | case ENCODER_OBJECT_ID_INTERNAL_DAC2: | 1639 | case ENCODER_OBJECT_ID_INTERNAL_DAC2: |
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c index cf389ce50a8a..2441cca7d775 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c | |||
| @@ -830,8 +830,8 @@ static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode) | |||
| 830 | crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; | 830 | crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; |
| 831 | 831 | ||
| 832 | if (rdev->family == CHIP_R420 || | 832 | if (rdev->family == CHIP_R420 || |
| 833 | rdev->family == CHIP_R423 || | 833 | rdev->family == CHIP_R423 || |
| 834 | rdev->family == CHIP_RV410) | 834 | rdev->family == CHIP_RV410) |
| 835 | tv_dac_cntl |= (R420_TV_DAC_RDACPD | | 835 | tv_dac_cntl |= (R420_TV_DAC_RDACPD | |
| 836 | R420_TV_DAC_GDACPD | | 836 | R420_TV_DAC_GDACPD | |
| 837 | R420_TV_DAC_BDACPD | | 837 | R420_TV_DAC_BDACPD | |
| @@ -907,35 +907,43 @@ static void radeon_legacy_tv_dac_mode_set(struct drm_encoder *encoder, | |||
| 907 | if (rdev->family != CHIP_R200) { | 907 | if (rdev->family != CHIP_R200) { |
| 908 | tv_dac_cntl = RREG32(RADEON_TV_DAC_CNTL); | 908 | tv_dac_cntl = RREG32(RADEON_TV_DAC_CNTL); |
| 909 | if (rdev->family == CHIP_R420 || | 909 | if (rdev->family == CHIP_R420 || |
| 910 | rdev->family == CHIP_R423 || | 910 | rdev->family == CHIP_R423 || |
| 911 | rdev->family == CHIP_RV410) { | 911 | rdev->family == CHIP_RV410) { |
| 912 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | | 912 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | |
| 913 | RADEON_TV_DAC_BGADJ_MASK | | 913 | RADEON_TV_DAC_BGADJ_MASK | |
| 914 | R420_TV_DAC_DACADJ_MASK | | 914 | R420_TV_DAC_DACADJ_MASK | |
| 915 | R420_TV_DAC_RDACPD | | 915 | R420_TV_DAC_RDACPD | |
| 916 | R420_TV_DAC_GDACPD | | 916 | R420_TV_DAC_GDACPD | |
| 917 | R420_TV_DAC_BDACPD | | 917 | R420_TV_DAC_BDACPD | |
| 918 | R420_TV_DAC_TVENABLE); | 918 | R420_TV_DAC_TVENABLE); |
| 919 | } else { | 919 | } else { |
| 920 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | | 920 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | |
| 921 | RADEON_TV_DAC_BGADJ_MASK | | 921 | RADEON_TV_DAC_BGADJ_MASK | |
| 922 | RADEON_TV_DAC_DACADJ_MASK | | 922 | RADEON_TV_DAC_DACADJ_MASK | |
| 923 | RADEON_TV_DAC_RDACPD | | 923 | RADEON_TV_DAC_RDACPD | |
| 924 | RADEON_TV_DAC_GDACPD | | 924 | RADEON_TV_DAC_GDACPD | |
| 925 | RADEON_TV_DAC_BDACPD); | 925 | RADEON_TV_DAC_BDACPD); |
| 926 | } | 926 | } |
| 927 | 927 | ||
| 928 | /* FIXME TV */ | 928 | tv_dac_cntl |= RADEON_TV_DAC_NBLANK | RADEON_TV_DAC_NHOLD; |
| 929 | if (tv_dac) { | 929 | |
| 930 | struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv; | 930 | if (is_tv) { |
| 931 | tv_dac_cntl |= (RADEON_TV_DAC_NBLANK | | 931 | if (tv_dac->tv_std == TV_STD_NTSC || |
| 932 | RADEON_TV_DAC_NHOLD | | 932 | tv_dac->tv_std == TV_STD_NTSC_J || |
| 933 | RADEON_TV_DAC_STD_PS2 | | 933 | tv_dac->tv_std == TV_STD_PAL_M || |
| 934 | tv_dac->ps2_tvdac_adj); | 934 | tv_dac->tv_std == TV_STD_PAL_60) |
| 935 | tv_dac_cntl |= tv_dac->ntsc_tvdac_adj; | ||
| 936 | else | ||
| 937 | tv_dac_cntl |= tv_dac->pal_tvdac_adj; | ||
| 938 | |||
| 939 | if (tv_dac->tv_std == TV_STD_NTSC || | ||
| 940 | tv_dac->tv_std == TV_STD_NTSC_J) | ||
| 941 | tv_dac_cntl |= RADEON_TV_DAC_STD_NTSC; | ||
| 942 | else | ||
| 943 | tv_dac_cntl |= RADEON_TV_DAC_STD_PAL; | ||
| 935 | } else | 944 | } else |
| 936 | tv_dac_cntl |= (RADEON_TV_DAC_NBLANK | | 945 | tv_dac_cntl |= (RADEON_TV_DAC_STD_PS2 | |
| 937 | RADEON_TV_DAC_NHOLD | | 946 | tv_dac->ps2_tvdac_adj); |
| 938 | RADEON_TV_DAC_STD_PS2); | ||
| 939 | 947 | ||
| 940 | WREG32(RADEON_TV_DAC_CNTL, tv_dac_cntl); | 948 | WREG32(RADEON_TV_DAC_CNTL, tv_dac_cntl); |
| 941 | } | 949 | } |
