linux/drivers/gpu/drm/rcar-du
Jacopo Mondi 8c74c4561f drm: rcar-du: Improve non-DPLL clock selection
DU channels not equipped with a DPLL use an SoC internal (provided by
the CPG) or external clock source combined with a DU internal divider to
generate the desired output dot clock frequency.

The current clock selection procedure does not fully exploit the ability
of external clock sources to generate the exact dot clock frequency by
themselves, but relies instead on tuning the internal DU clock divider
only, resulting in a less precise clock generation process.

When possible, and desirable, ask the external clock source for the
exact output dot clock frequency, and select the clock source that
produces the frequency closest to the desired output dot clock.

This patch specifically targets platforms (like Salvator-X[S] and ULCBs)
where the DU's input dotclock.in is generated by the versaclock VC5
clock source, which is capable of generating the exact rate the DU needs
as pixel clock output.

This patch fixes higher resolution modes which requires an high pixel
clock output currently not working on non-HDMI DU channel (such as
1920x1080@60Hz on the VGA output).

Fixes: 1b30dbde85 ("drm: rcar-du: Add support for external pixel clock")
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
[Factor out code to a helper function]
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
2018-09-15 17:28:26 +03:00
..
Kconfig drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
Makefile drm: rcar-du: disable dtc graph-endpoint warnings on DT overlays 2018-05-15 08:23:46 -05:00
rcar_du_crtc.c drm: rcar-du: Improve non-DPLL clock selection 2018-09-15 17:28:26 +03:00
rcar_du_crtc.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_drv.c drm: rcar-du: Add interlaced feature flag 2018-09-14 13:54:04 +03:00
rcar_du_drv.h drm: rcar-du: Add interlaced feature flag 2018-09-14 13:54:04 +03:00
rcar_du_encoder.c drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_encoder.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_group.c drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_group.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_kms.c drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_kms.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_of_lvds_r8a7790.dts drm: rcar-du: Fix legacy DT to create LVDS encoder nodes 2018-03-07 18:06:41 +02:00
rcar_du_of_lvds_r8a7791.dts drm: rcar-du: Fix legacy DT to create LVDS encoder nodes 2018-03-07 18:06:41 +02:00
rcar_du_of_lvds_r8a7793.dts drm: rcar-du: Fix legacy DT to create LVDS encoder nodes 2018-03-07 18:06:41 +02:00
rcar_du_of_lvds_r8a7795.dts drm: rcar-du: Fix legacy DT to create LVDS encoder nodes 2018-03-07 18:06:41 +02:00
rcar_du_of_lvds_r8a7796.dts drm: rcar-du: Fix legacy DT to create LVDS encoder nodes 2018-03-07 18:06:41 +02:00
rcar_du_of.c drm: rcar-du: of: Include header to define prototypes 2018-05-05 17:11:15 +03:00
rcar_du_of.h drm: rcar-du: Fix rcar_du_of_init() stub 2018-05-17 15:03:32 +10:00
rcar_du_plane.c drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_plane.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_regs.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_du_vsp.c drm: rcar-du: Support interlaced video output through vsp1 2018-09-14 13:54:03 +03:00
rcar_du_vsp.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_dw_hdmi.c drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_lvds_regs.h drm: rcar-du: Convert to SPDX identifiers 2018-09-14 13:54:03 +03:00
rcar_lvds.c drm: drop _mode_ from drm_mode_connector_attach_encoder 2018-07-13 18:40:27 +02:00