linux_dsm_epyc7002/drivers/gpu/drm/rcar-du
Laurent Pinchart 0bc3544a01 drm: rcar-du: Fix DU3 start/stop on M3-N
Group start/stop is controlled by the DRES and DEN bits of DSYSR0 for
the first group and DSYSR2 for the second group. On most DU instances,
this maps to the first CRTC of the group. On M3-N, however, DU2 doesn't
exist, but DSYSR2 does. There is no CRTC object there that maps to the
correct DSYSR register.

Commit 9144adc5e5 ("drm: rcar-du: Cache DSYSR value to ensure known
initial value") switched group start/stop from using group read/write
access to DSYSR to a CRTC-based API to cache the DSYSR value. While
doing so, it introduced a regression on M3-N by accessing DSYSR3 instead
of DSYSR2 to start/stop the second group.

To fix this, access the DSYSR register directly through group read/write
if the SoC is missing the first DU channel of the group. Keep using the
rcar_du_crtc_dsysr_clr_set() function otherwise, to retain the DSYSR
caching feature.

Fixes: 9144adc5e5 ("drm: rcar-du: Cache DSYSR value to ensure known initial value")
Reported-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Tested-by: Simon Horman <horms+renesas@verge.net.au>
2018-11-26 10:42:22 +02: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: Don't use TV sync mode when not supported by the hardware 2018-09-25 00:41:05 +03:00
rcar_du_crtc.h drm: rcar-du: Cache DSYSR value to ensure known initial value 2018-09-25 00:41:04 +03:00
rcar_du_drv.c drm: rcar-du: Add r8a77990 and r8a77995 device support 2018-09-25 00:41:05 +03:00
rcar_du_drv.h drm: rcar-du: Don't use TV sync mode when not supported by the hardware 2018-09-25 00:41:05 +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: Fix DU3 start/stop on M3-N 2018-11-26 10:42:22 +02: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: Enable configurable DPAD0 routing on Gen3 2018-09-25 00:41: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: Write ESCR and OTAR as CRTC registers 2018-09-15 17:28:31 +03:00
rcar_du_vsp.c drm: rcar-du: Remove packed VYUY support 2018-09-15 17:28:34 +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: lvds: D3/E3 support 2018-09-25 00:40:56 +03:00
rcar_lvds.c drm: rcar-du: lvds: D3/E3 support 2018-09-25 00:40:56 +03:00