drm: imx: callback after probe deferral not working

Akshay Bhat akshay.bhat at timesys.com
Mon Feb 1 20:02:30 CET 2016



On 02/01/2016 07:11 AM, Liviu Dudau wrote:
> On Fri, Jan 29, 2016 at 05:12:28PM -0500, Akshay Bhat wrote:
>>
>>
>> On 01/28/2016 05:29 PM, Rob Clark wrote:
>>> can't really say if that is the issue in this case, but these are the
>>> symptoms you'd see if the kernel was built without some driver that
>>> imx-drm depends on[1].  The kernel will only try to reprobe a driver
>>> if some other driver has loaded since it last deferred (otherwise, it
>>> would be pointless, you'd just -EPROBE_DEFER again).
>>>
>>> [1] which is a really annoying thing about devicetree..  there's no
>>> good way to figure out which drivers need to be enabled in kernel
>>> config..
>>>
>>> BR,
>>> -R
>>>
>>
>> I agree a missing driver would show the symptoms I am seeing. However I have
>> verified this is not the case by moving i2c above gpu in the makefile and
>> keeping everything else the same. This results in the i2c mux driver init
>> (pca9547) being called before the drm init and everything works fine in that
>> case (indicates no missing driver).
>>
>> Also from the original log you can see that there are a lot of modules that
>> are loaded after the drm driver does a probe defer, yet there is no entries
>> in the bootlog for the drm driver being re-probed. In the next-20151202
>> kernel log you can see it being re-probed. This points to the drm probe
>> deferral being broken.
>>
>> Thanks for your input, any other ideas are welcome.
>
> I think your problem is similar to what Tixy has found when testing HDLCD,
> which also uses the components API. He has posted a patch here:
>
> http://www.spinics.net/lists/arm-kernel/msg477090.html
>
> Russell has added it to his branch, seems to be available in linux-next
> as commit 57480484f9f7631738ef2.
>
> Best regards,
> Liviu
>

Liviu,

I re-tested with next-20160201 which contains the above patch and still 
see the issue where the re-probe does not work.

Thanks,
Akshay

dmesg | grep -i 'drm \| pca'
[    1.266320] [drm] Initialized drm 1.1.0 20060810
[    1.437590] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops 
ipu_crtc_ops)
[    1.445237] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops 
ipu_crtc_ops)
[    1.452856] imx-drm display-subsystem: bound imx-ipuv3-crtc.6 (ops 
ipu_crtc_ops)
[    1.460453] imx-drm display-subsystem: bound imx-ipuv3-crtc.7 (ops 
ipu_crtc_ops)
[    1.468188] imx-drm display-subsystem: failed to bind 120000.hdmi 
(ops dw_hdmi_imx_ops): -517
[    1.479742] imx-drm display-subsystem: master bind failed: -517
[    2.169468] pca954x 0-0070: registered 8 multiplexed busses for I2C 
mux pca9547
[    2.223390] pca954x 1-0070: registered 8 multiplexed busses for I2C 
mux pca9547

dmesg |head -n2
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.5.0-rc1-next-20160201-00007-g3c1226b 
(nodeax at timesysab) (gcc version 4.8.5 (Timesys 20150713) ) #168 SMP Mon 
Feb 1 13:12:04 EST 2016



More information about the dri-devel mailing list