Hi Noralf,

> >>        mode->flags) {
> >>            dev_err(dev, "%pOF: panel-timing out of bounds\n", 
> >> dev->of_node);
> >>            return -EINVAL;
> >>    }
> > With the display_timing => drm_display_mode I think the above is no
> > longer required.
> > 
> 
> I still need to verify the values to ensure that front_porch and
> sync_len are zero. Maybe I need a comment now to tell what I'm checking
> since I'm further away from the DT values:
> 
> /*
>  * Make sure width and height are set and that only back porch and
>  * pixelclock are set in the other timing values. Also check that
>  * width and height don't exceed the 16-bit value specified by MIPI DCS.
>  */
Yes, that would be nice.
> 
> >>
> >>    /* The driver doesn't use the pixel clock but it is mandatory so fake
> >> one if not set */
> >>    if (!mode->pixelclock)
> >>            mode->pixelclock = mode->htotal * mode->vtotal * 60 / 1000;
> >>
> >>    dbidev->top_offset = vback_porch;
> >>    dbidev->left_offset = hback_porch;
> >>
> >>    return 0;
> >> }
> >>
> >>
> >> int of_get_drm_panel_display_mode(struct device_node *np,
> >>                              struct drm_display_mode *dmode, u32 
> >> *bus_flags)
> >> {
> > Not sure about the bus_flags argument here - seems misplaced.
> > 
> 
> I did the same as of_get_drm_display_mode(), don't panel drivers need
> the bus flags?

In my haste I missed the display_timing combines flags for the bus and
the mode - so yes it is needed.


> 
> >>    u32 width_mm = 0, height_mm = 0;
> >>    struct display_timing timing;
> >>    struct videomode vm;
> >>    int ret;
> >>
> >>    ret = of_get_display_timing(np, "panel-timing", &timing);
> >>    if (ret)
> >>            return ret;
> >>
> >>    videomode_from_timing(&timing, vm);
> >>
> >>    memset(dmode, 0, sizeof(*dmode));
> >>    drm_display_mode_from_videomode(&vm, dmode);
> >>    if (bus_flags)
> >>            drm_bus_flags_from_videomode(&vm, bus_flags);
> > 
> > This does a:
> > display_timing => video_mode => drm_display_display_mode
> > 
> > We could do a:
> > display_timing => drm_display_mode.
> > 
> 
> I'll leave this to others to sort out. I want the function to look the
> same as of_get_drm_display_mode() and it uses videomode. If videomode
> goes away both can be fixed at the same time.

When I have dig myself out of the bridge hole I am in I may take a
look at this.

        Sam

Reply via email to