[PATCH] drm/radeon/kms/atom: initialize dig phy a bit later

Alex Deucher alexdeucher at gmail.com
Fri Jun 3 13:21:32 PDT 2011


On Fri, Jun 3, 2011 at 4:03 PM, Ari Savolainen
<ari.m.savolainen at gmail.com> wrote:
> I'm using ASUS EAH3650SILENTMG/HTDP.
>
> I got the feeling that in my case, radeon_atom_encoder_prepare needed to be
> called before radeon_atom_encoder_init (the call occurred during
> radeon_fbdev_init). That ensured radeon_encoder->enc_priv->dig_encoder to have
> a value other than -1 in the first call of atombios_dig_transmitter_setup (with
> action=ATOM_TRANSMITTER_ACTION_INIT).  But I don't know the code well enough to
> be sure about that.

NACK on the patch for now.  Let's try and sort this out.  INIT needs
to be called before the mode is set, so this needs to come before
fbdev sets the mode.  I'll send out a patch soon.

Alex

>
> Ari
>
> 2011/6/3 Alex Deucher <alexdeucher at gmail.com>:
>> On Thu, Jun 2, 2011 at 5:20 PM, Ari Savolainen
>> <ari.m.savolainen at gmail.com> wrote:
>>> Commit ac89af1e1010640db072416c786f97391b85790f caused one of the monitors
>>> attached to a dual head radeon gpu to have inverted colors (until the first
>>> suspend/resume). Initializing dig phy a bit later fixes the problem.
>>
>> Strange, I don't see why that would make a difference, I guess perhaps
>> there's some strange interaction between the hpd setup or the initial
>> clock/voltage setup on DCE5 hw.  What chip are you using?
>>
>> Anyway, should be fine.
>>
>> Acked-by: Alex Deucher <alexdeucher at gmail.com>
>>
>>>
>>> ---
>>>  drivers/gpu/drm/radeon/radeon_display.c |    8 ++++----
>>>  1 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/radeon/radeon_display.c
>>> b/drivers/gpu/drm/radeon/radeon_display.c
>>> index ae247ee..ddff2cf 100644
>>> --- a/drivers/gpu/drm/radeon/radeon_display.c
>>> +++ b/drivers/gpu/drm/radeon/radeon_display.c
>>> @@ -1346,10 +1346,6 @@ int radeon_modeset_init(struct radeon_device *rdev)
>>>                return ret;
>>>        }
>>>
>>> -       /* init dig PHYs */
>>> -       if (rdev->is_atom_bios)
>>> -               radeon_atom_encoder_init(rdev);
>>> -
>>>        /* initialize hpd */
>>>        radeon_hpd_init(rdev);
>>>
>>> @@ -1359,6 +1355,10 @@ int radeon_modeset_init(struct radeon_device *rdev)
>>>        radeon_fbdev_init(rdev);
>>>        drm_kms_helper_poll_init(rdev->ddev);
>>>
>>> +       /* init dig PHYs */
>>> +       if (rdev->is_atom_bios)
>>> +               radeon_atom_encoder_init(rdev);
>>> +
>>>        return 0;
>>>  }
>>>
>>> --
>>> 1.7.4.1
>>>
>>
>


More information about the dri-devel mailing list