linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Carlos Palminha <CARLOS.PALMINHA@synopsys.com>
To: Xinliang Liu <xinliang.liu@linaro.org>,
	Carlos Palminha <CARLOS.PALMINHA@synopsys.com>
Cc: linux-fbdev@vger.kernel.org, tomi.valkeinen@ti.com,
	Alexey Brodkin <Alexey.Brodkin@synopsys.com>,
	laurent.pinchart@ideasonboard.com,
	dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: Whats missing in my new FB DRM driver... "No connectors reported connected with modes"?
Date: Thu, 21 Jan 2016 18:09:53 +0000	[thread overview]
Message-ID: <56A11EF1.3070004@synopsys.com> (raw)
In-Reply-To: <CAGd==04VMKUvb6hZkeNw3kAQt04y0d_Ry7oCtC8=2SWcfWG25A@mail.gmail.com>

i made some progress in identifying the issue...
When my driver calls drm_fb_helper_initial_config it seems DRM blocks waiting for register_framebuffer to return.
The sequence is drm_fb_helper_initial_config->drm_fb_helper_single_fb_probe->register_framebuffer.

Its strange because register_framebuffer function is just a mutex around do_register_framebuffer.

Any clue?!

On 20-01-2016 01:24, Xinliang Liu wrote:
> On 20 January 2016 at 00:52, Carlos Palminha
> <CARLOS.PALMINHA@synopsys.com> wrote:
>> when i boot the kernel and connect the HDMI cable after booting i can retrieve 4 modes... :)
>>
>> if i boot linux with the HDMI cable inserted the kernel hangs.
> 
> What's the hang kernel log. Is it a oops?
> 
>> Possible relation with HPD?
> 
> Yes,  I think there might be something wrong with the HPD interrupt or
> the EDID ready interrupt.
> I do meet the similar issue before when I using the upstream adv7511
> driver to enable adv7533.
> I found that the HPD and EDID interrupt is not reliable.
> In order to get modes stably, I have to add some delay like bellow:
> --
> --- a/drivers/gpu/drm/i2c/adv7511.c
> +++ b/drivers/gpu/drm/i2c/adv7511.c
> @@ -657,6 +657,8 @@ static int adv7511_get_modes(struct adv7511 *adv7511,
>                 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
>                                    ADV7511_POWER_POWER_DOWN, 0);
>                 adv7511->current_edid_segment = -1;
> +               /* wait some time for edid is ready */
> +               msleep(200);
>         }
> 
>         edid = drm_do_get_edid(connector, adv7511_get_edid_block, adv7511);
> --
> 
> Best,
> -xinliang
> 
>>
>> Regards,
>> C.Palminha
>>
>> # modetest -M drm-arcpgu -c
>> Connectors:
>> id      encoder status          type    size (mm)       modes   encoders
>> 21      0       connected       HDMI-A  0x0             4       20
>>   modes:
>>         name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
>>   800x600 60 800 840 968 1056 600 601 605 628 flags: phsync, pvsync; type: driver
>>   800x600 56 800 824 896 1024 600 601 603 625 flags: phsync, pvsync; type: driver
>>   848x480 60 848 864 976 1088 480 486 494 517 flags: phsync, pvsync; type: driver
>>   640x480 60 640 656 752 800 480 490 492 525 flags: nhsync, nvsync; type: driver
>>   props:
>>         1 EDID:
>>                 flags: immutable blob
>>                 blobs:
>>
>>                 value:
>>         2 DPMS:
>>                 flags: enum
>>                 enums: On=0 Standby=1 Suspend=2 Off=3
>>                 value: 0
>>
>> #
>>
>> On 19-01-2016 16:03, Carlos Palminha wrote:
>>> Hi Xiang,
>>>
>>> Its returning 0 modes... :(
>>>
>>> Regards,
>>> C.Palminha
>>>
>>> # modetest -M drm-arcpgu -c
>>> Connectors:
>>> id      encoder status          type    size (mm)       modes   encoders
>>> 21      0       disconnected    HDMI-A  0x0             0       20
>>>   props:
>>>         1 EDID:
>>>                 flags: immutable blob
>>>                 blobs:
>>>
>>>                 value:
>>>         2 DPMS:
>>>                 flags: enum
>>>                 enums: On=0 Standby=1 Suspend=2 Off=3
>>>                 value: 0
>>>
>>> #
>>>
>>> On 19-01-2016 03:38, Xinliang Liu wrote:
>>>> On 18 January 2016 at 22:45, Carlos Palminha <CARLOS.PALMINHA@synopsys.com>
>>>> wrote:
>>>>
>>>>> I'm also getting a message from DRM saying can't find any crtc or
>>>>> sizes...i'm really missing something here.
>>>>> :(
>>>>>
>>>>> -- log --
>>>>> [drm] Initialized drm 1.1.0 20060810
>>>>> drm-arcpgu e0017000.pgu: No connectors reported connected with modes
>>>>> [drm] Cannot find any crtc or sizes - going 1024x768
>>>>> Console: switching to colour frame buffer device 128x48
>>>>> drm-arcpgu e0017000.pgu: fb0: frame buffer device
>>>>> [drm] Initialized drm-arcpgu 1.0.0 20151127 on minor 0
>>>>> -- log ---
>>>>>
>>>>> Any help?
>>>>>
>>>>> Regards,
>>>>> C.Palminha
>>>>>
>>>>>
>>>>> On 18-01-2016 14:32, Carlos Palminha wrote:
>>>>>> Hi Xinliang,
>>>>>>
>>>>>> My get_modes seems to be implemented as the rcar driver...
>>>>>> Probably still missing some init step?
>>>>>>
>>>>>> Regards,
>>>>>> C.Palminha
>>>>>>
>>>>>>
>>>>>> static int arcpgu_drm_connector_get_modes(struct drm_connector
>>>>> *connector)
>>>>>> {
>>>>>> struct drm_encoder_slave *slave;
>>>>>> const struct drm_encoder_slave_funcs *sfuncs;
>>>>>> struct arcpgu_drm_connector * con >>>>>> container_of(connector, struct arcpgu_drm_connector, connector);
>>>>>>
>>>>>> slave = con->encoder_slave;
>>>>>> if(slave = NULL) {
>>>>>> dev_err(connector->dev->dev,
>>>>>> "connector_get_modes: cannot find slave encoder for connector\n");
>>>>>> return 0;
>>>>>> }
>>>>>>
>>>>>> sfuncs = slave->slave_funcs;
>>>>>> if(sfuncs->get_modes = NULL){
>>>>>> return 0;
>>>>>> }
>>>>>>
>>>>>> return sfuncs->
>>>>>
>>>>> get_modes(&slave->base,connector);
>>>>>> }
>>>>>>
>>>>>
>>>>
>>>> so, this will call adv7511 driver's
>>>>
>>>> get_modes call back.
>>>> I wonder if the system boot up, it can get modes or not.
>>>> You can test it with the modetest. i.e. $ modetest -M DRM_DRIVER_NAME -c
>>>>
>>>>
>>>>
>>>>
>>>>>> On 31-12-2015 02:19, Xinliang Liu wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 31 December 2015 at 02:46, Carlos Palminha
>>>>>>> <CARLOS.PALMINHA@synopsys.com <mailto:CARLOS.PALMINHA@synopsys.com>>
>>>>> wrote:
>>>>>>>
>>>>>>>     Hi guys,
>>>>>>>
>>>>>>>     I'm writing a DRM driver for a framebuffer embedded hardware that
>>>>>>>     uses an i2c encoder (adv7511), following the basic steps suggested
>>>>>>>     by Laurent in "anatomy of an embedded KMS driver":
>>>>>>>     https://www.youtube.com/watch?v=Ja8fM7rTae4
>>>>>>>
>>>>>>>     After initiliazing all kms, crtc, encoder, i2c, connector functions
>>>>>>>     and structures i'm calling drm_fbdev_cma_init to create a fbdev.
>>>>>>>
>>>>>>>     When booting i'm getting an error message saying "No connectors
>>>>>>>     reported connected with modes", but the driver init is ok and i can
>>>>>>>     find the /dev/dri/* and /dev/fb0 devices.
>>>>>>>
>>>>>>>     Any clue what i might be missing during the driver load?
>>>>>>>
>>>>>>>
>>>>>>> I think you should check on the 'get_modes' call back of adv7511
>>>>>>> driver. (Or, if possible show us the code.)
>>>>>>>
>>>>>>> Best,
>>>>>>> -xinliang
>>>>>>>
>>>>>>>
>>>>>>>     Thanks...
>>>>>>>
>>>>>>>     Regards,
>>>>>>>     C.Palminha
>>>>>>>
>>>>>>>     --- boot log snippet ---
>>>>>>>     [drm] Initialized drm 1.1.0 20060810
>>>>>>>     drm-arcpgu e0017000.pgu: No connectors reported connected with modes
>>>>>>>     [drm] Cannot find any crtc or sizes - going 1024x768
>>>>>>>     Console: switching to colour frame buffer device 128x48
>>>>>>>     drm-arcpgu e0017000.pgu: fb0:  frame buffer device
>>>>>>>     [drm] Initialized drm-arcpgu 1.0.0 20151127 on minor 0
>>>>>>>     --- boot log snippet ---
>>>>>>>     --
>>>>>>>     To unsubscribe from this list: send the line "unsubscribe
>>>>>>>     linux-fbdev" in
>>>>>>>     the body of a message to majordomo@vger.kernel.org
>>>>>>>     <mailto:majordomo@vger.kernel.org>
>>>>>>>     More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>>>>
>>>>>>>
>>>>>
>>>>

  reply	other threads:[~2016-01-21 18:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-30 18:46 Whats missing in my new FB DRM driver... "No connectors reported connected with modes"? Carlos Palminha
2015-12-30 18:53 ` Carlos Palminha
     [not found] ` <CAGd==071hzpQKjLU715tc004NN0d8Z01XdLAhg-DBx1FxtWb2w@mail.gmail.com>
2016-01-18 14:32   ` Carlos Palminha
2016-01-18 14:45     ` Carlos Palminha
     [not found]       ` <CAGd==07ffJAfAtzirALR3OF7f4UDVu_fJbbZ0ZiEa3F5-hLfyw@mail.gmail.com>
2016-01-19 16:03         ` Carlos Palminha
2016-01-19 16:52           ` Carlos Palminha
2016-01-20  1:24             ` Xinliang Liu
2016-01-21 18:09               ` Carlos Palminha [this message]
2016-01-21 18:30                 ` Whats missing in my new FB DRM driver in ARC... waiting for console_lock to return Carlos Palminha
2016-01-22  8:32                   ` Daniel Stone
2016-01-28 14:20                   ` Alexey Brodkin
2016-01-28 15:42                     ` Rob Clark
2016-01-22  7:41                 ` Whats missing in my new FB DRM driver... "No connectors reported connected with modes"? Daniel Vetter
2016-01-22  8:34                   ` Daniel Stone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56A11EF1.3070004@synopsys.com \
    --to=carlos.palminha@synopsys.com \
    --cc=Alexey.Brodkin@synopsys.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=tomi.valkeinen@ti.com \
    --cc=xinliang.liu@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).