Hi, The orientation quirks applied at virtual console initialization in inteldrm_attachhook() are not applied at the corresponding place in amdgpu. Adding them to amdgpu causes the Steam Deck console to display upright instead of on its side.
ok? Index: sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c =================================================================== RCS file: /cvs/src/sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c,v retrieving revision 1.29 diff -u -p -r1.29 amdgpu_drv.c --- sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c 31 Mar 2023 02:04:27 -0000 1.29 +++ sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c 25 Apr 2023 15:14:36 -0000 @@ -27,6 +27,11 @@ #include <drm/drm_gem.h> #include <drm/drm_vblank.h> #include <drm/drm_managed.h> + +#ifdef __OpenBSD__ +#include <drm/drm_utils.h> +#endif + #include "amdgpu_drv.h" #include <drm/drm_pciids.h> @@ -3564,6 +3569,7 @@ amdgpu_attachhook(struct device *self) } { struct wsemuldisplaydev_attach_args aa; + int orientation_quirk; task_set(&adev->switchtask, amdgpu_doswitch, ri); task_set(&adev->burner_task, amdgpu_burner_cb, adev); @@ -3572,6 +3578,14 @@ amdgpu_attachhook(struct device *self) return; ri->ri_flg = RI_CENTER | RI_VCONS | RI_WRONLY; + + orientation_quirk = drm_get_panel_orientation_quirk(ri->ri_width, + ri->ri_height); + if (orientation_quirk == DRM_MODE_PANEL_ORIENTATION_LEFT_UP) + ri->ri_flg |= RI_ROTATE_CCW; + else if (orientation_quirk == DRM_MODE_PANEL_ORIENTATION_RIGHT_UP) + ri->ri_flg |= RI_ROTATE_CW; + rasops_init(ri, 160, 160); ri->ri_hw = adev;