-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
drm/vc4: crtc: Support odd horizontal timings on BCM2712 #5679
Conversation
It looks like the patch sets the bit whenever it is available. Are there no downsides? |
I don't believe so. It was just added as opt-in in case it breaks something.
It shouldn't harm performance (we still run two pixels per clock). There is some chance of a bug, but 1366x768@60 with odd timings works:
and dual 4kp60 still works. I guess we won't know about any subtle failures without getting more people testing it. Maybe leave it a couple of days for the stable kernel to get out before merging. @6by9 may want to try it. |
Works on my 1366x768 monitor which has a slightly different timing from popcornmix's
We could drop the comment at https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/gpu/drm/vc4/vc4_crtc.c#L401-L406 as it has no real benefit now that the bit is set. Not a requirement though. |
BCM2711 runs pixelvalve at two pixels per clock cycle which results in an unfortunate limitation that odd horizontal timings are not possible. This is apparent on the standard DMT mode of 1366x768@60 which cannot be driven with correct timing. BCM2712 defaults to the same behaviour, but has a mode to support odd timings. While internally it still runs at two pixels per clock, setting the PV_VCONTROL_ODD_TIMING bit makes it appear externally to behave as it is one pixel per clock. Switching to this mode fixes 1366x768@60 mode, and other custom resultions with odd horizontal timings. Signed-off-by: Dom Cobley <[email protected]>
79f92c7
to
5784f38
Compare
Dropped outdated comment. |
kernel: KMS stale dlist alloc changes See: raspberrypi/linux#5684 kernel: drm/vc4: crtc: Support odd horizontal timings on BCM2712 See: raspberrypi/linux#5679 kernel: spi: dw-dma: Get the last DMA scoop out of the FIFO See: raspberrypi/linux#5699 kernel: defconfigs: Drop FB_UDL from all Pi defconfigs See: raspberrypi/linux#5702 kernel: RP1 GPIO header SDIO support See: raspberrypi/linux#5704 kernel: ASoC: bcm: audioinjector_octo: Add soundcard owner See: raspberrypi/linux#5705 kernel: drivers: media: imx708: Tweak broken line correction parameter See: raspberrypi/linux#5701
kernel: KMS stale dlist alloc changes See: raspberrypi/linux#5684 kernel: drm/vc4: crtc: Support odd horizontal timings on BCM2712 See: raspberrypi/linux#5679 kernel: spi: dw-dma: Get the last DMA scoop out of the FIFO See: raspberrypi/linux#5699 kernel: defconfigs: Drop FB_UDL from all Pi defconfigs See: raspberrypi/linux#5702 kernel: RP1 GPIO header SDIO support See: raspberrypi/linux#5704 kernel: ASoC: bcm: audioinjector_octo: Add soundcard owner See: raspberrypi/linux#5705 kernel: drivers: media: imx708: Tweak broken line correction parameter See: raspberrypi/linux#5701
Odd timings have been supported on Pi 5 since raspberrypi/linux#5679
Odd timings have been supported on Pi 5 since raspberrypi/linux#5679
Odd timings have been supported on Pi 5 since raspberrypi/linux#5679
BCM2711 runs pixelvalve at two pixels per clock cycle which results in an unfortunate limitation that odd horizontal timings are not possible. This is apparent on the standard DMT mode of 1366x768@60 which cannot be driven with correct timing.
BCM2712 defaults to the same behaviour, but has a mode to support odd timings. While internally it still runs at two pixels per clock, setting the PV_VCONTROL_ODD_TIMING bit makes it appear externally to behave as it is one pixel per clock.
Switching to this mode fixes 1366x768@60 mode, and other custom resultions with odd horizontal timings.