-
Notifications
You must be signed in to change notification settings - Fork 1.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
64bit MMAL support #586
64bit MMAL support #586
Conversation
Posted for basic testing. |
b1887d5
to
605fe8e
Compare
Force pushed which hopefully resolves the leaks. The top patch adds debug that on every component destroy call dumps out debug of how many client or component handles are still mapped. On a clean application exit these should always be 0. This patch is not expected to be merged into the final tree. |
Includes patch from 6by9, which enables 64-bit MMAL raspberrypi/userland#586
} | ||
vchiq_release_message(service, header); | ||
} | ||
break; | ||
case VCHIQ_BULK_TRANSMIT_ABORTED: | ||
{ | ||
mmal_worker_buffer_from_host *msg = (mmal_worker_buffer_from_host *)context; | ||
LOG_INFO("bulk tx aborted: %p, %d", msg->buffer_header.data, msg->buffer_header.length); | ||
vcos_assert(msg->drvbuf.client_context->magic == MMAL_MAGIC); | ||
MMAL_VC_CLIENT_BUFFER_CONTEXT_T *client_context = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With -Werror
and -Wno-unused-but-set-variable
(the default), compile fails for me (on aarch64 Gentoo, gcc
9.2.0) on this line, with:
/var/tmp/portage/media-libs/raspberrypi-userland-1.20191025/work/raspberrypi-userland-1.20191025/interface/mmal/vc/mmal_vc_client.c:705:43: error: unused variable ‘client_context’ [-Werror=unused-variable]
705 | MMAL_VC_CLIENT_BUFFER_CONTEXT_T *client_context =
| ^~~~~~~~~~~~~~
Adding something similar to
client_context = NULL;
at the end of the function suppresses this and allows the compile to complete successfully.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. I was building debug builds and therefore the assert used the variable.
The other approach would be to do the call within the assert. I'll revisit it when I have a chance.
I've been trying to tidy up the firmware side of it first as it has all the counterpart casts to convert between the IPC and active formats (even though they are actually identical in a 32bit world).
Fix up a small build issue raspberrypi/userland#586 (review)
Hi @6by9, so, on the basis of very preliminary testing, I've built the demouser@pi64 ~ $ ffmpeg -f video4linux2 -input_format h264 \
-video_size 1280x720 -framerate 30 -i /dev/video0 \
-vcodec copy -an -f matroska test.mkv
<after a while, Ctrl-c, then...>
demouser@pi64 ~ $ ffplay -vcodec h264_mmal -i test.mkv Seems to work reasonably well (and is definitely using the Haven't tried capture or transcoding yet. This is on a gentoo-on-rpi-64bit system, with hth, sakaki |
@@ -0,0 +1,240 @@ | |||
/* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't expecting a new source file based on the commit message (which has a typo, BTW). A bit more explanation would be nice.
@@ -515,7 +612,7 @@ static inline void mmal_vc_buffer_header_to_msg(mmal_worker_buffer_from_host *ms | |||
msg->buffer_header.pts = header->pts; | |||
msg->buffer_header.dts = header->dts; | |||
msg->buffer_header.alloc_size = header->alloc_size; | |||
msg->buffer_header.data = header->data; | |||
msg->buffer_header.data = (uintptr_t)header->data; | |||
msg->buffer_header_type_specific = *header->type; | |||
} | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This whole commit is a bit TL;DR for me to have fully analysed it, but it all looks plausible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I had started with bits of it as some individual commits, but hadn't been careful enough about squashing fixups into the right commit, so squahsed the whole lot into one.
It's mainly using a lookup table for client contexts and component contexts - I can try splitting the various bits out into independent commits if you really want it. There's then the changes to the RPC structures as well with some casts.
Annoyingly the contexts get allocated (and freed) from mmal_vc_api.c, but all the actual lookups are in mmal_vc_client, hence exporting only some of the functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pasting that into the commit message is probably enough.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I'll update the commit message with more detail of what exactly has been changed and why.
vcos_assert(msg->drvbuf.client_context->magic == MMAL_MAGIC); | ||
msg->drvbuf.client_context->callback(msg); | ||
LOG_TRACE("bulk rx done: %p, %d", msg->buffer_header.data, msg->buffer_header.length); | ||
MMAL_VC_CLIENT_BUFFER_CONTEXT_T *client_context = mmal_vc_lookup_client_context(msg->drvbuf.client_context); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is indentation screwy here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks OK to me...
vcos_mutex_unlock(&client_context_pool.lock); | ||
|
||
return i; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Has this been tested when MAX_CLIENT_CONTEXTS has been reached?
It looks like this returns MAX_CLIENT_CONTEXTS, so mmal_vc_lookup_client_context returns NULL.
But that doesn't seem to be protected against (e.g. mmal_vc_port_by_number dereferences null pointer)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, the failure mode is currently going to be nasty. The limits are set so that they are highly unlikely to ever be hit, but the alloc does need to fail gracefully and then pass the failure back up.
I do have the firmware side compiling too, but I'll hold fire on pushing that one so that I can cherry-pick the actual changes from here rather than having a mismash. |
Does firmware side require a rebuild? |
As above, the firmware shouldn't need changing at all. |
|
All from 605fe8e "Debug for context and component mappings". I'm just hoping that on a clean exit you end up with 0 entries in use. |
Got one of these, which suggests the callback pointer I passed in wasn't returned as expected. |
|
OK, I'll have a look at what kodi is doing when I'm back in the office. 32bit should have been almost a nop, but obviously not. And I'm very glad I didn't make this all a special path only for 64bit as it wouldn't have shaken out these issues. |
I've fixed up what I believe was the issue. Two extra patches pushed which I'll squash when confirmed to work. I've only tested on 32bit at present, so will try 64bit when I get some more time. |
Add explict mmal dep on >=media-libs/raspberrypi-userland-1.20191121 (which includes raspberrypi/userland#586)
HI @6by9, FYI, I just merged this PR for the recent v1.5.2 release of gentoo-on-rpi-64bit. Appreciate it's been tagged with RFC status, but having it out there should hopefully elicit some "C" ^-^ Best, sakaki |
@6by9 sorry - missed your updated commits. Just tested again, kodi-mmal, pi4 with H264 and MPEG2 on 32-bit userland, with 32-bit kernel seems fine now. With 64-bit kernel (and so the switch from vcsm to vcsm-cma) it is mostly functional. Example output after playing H264.
|
I'd just like to mention that I tested this on pi 4, Ubuntu 18.04 64-bit (using `https://github.com/TheRemote/Ubuntu-Server-raspi4-unofficial/releases'), and recording (raspivid) is working fine for me (recorded video is clean). I do see the messages similar to:
Not sure if this is the right place to provide such feedback, but thanks 6by9! |
The debug messages are from 605fe8e, which is only there for test purposes. Getting "0 entries in use" means that everything is being cleaned up. The suspicion is that there are still a couple of corner cases in there that aren't behaving, but I'm tempted to tidy up the patches and merge this. It doesn't harm 32bit, and seems to support many 64 bit use cases. |
@6by9 I'm okay with getting this merged. I didn't spot any regressions and it made some 64-bit use cases work better. |
Sorry, I've noticed that I've got a couple of minor updates on my working tree. Three main things:
I'll drop/disable the debug patches, and add those changes in. |
I've found another corner case. The MMAL_EVENT_FORMAT_CHANGED event buffer includes the MMAL_ES_FORMAT_T and MMAL_ES_SPECIFIC_FORMAT_T and MMAL_ES_FORMAT_T is one of the structures that changes size. |
Where 32bit values are passed down to the VPU, these need to be mapped into a lookup table within the client. Any pointers that happen to be within structures such as MMAL_ES_FORMAT_T are already recreated at each end, but the IPC structures must always be of the same structure. Where there are pointers to host side client contexts or component handles, these are stored in lookup tables and a 32bit handle passed to the VPU. On return these are looked back up again to convert back to the handle.
Fixes various casts to/from integer of a different size, and printf for size_t not using %zu.
Drops host_applications/android/apps/vidtex interface/mmal/openmaxil interface/mmal/client(/brcmjpeg) as they aren't directly supported and need further fixup for 64bit.
I've had mmalplay working fine on Gentoo, so I believe that that is resolved. Removing RFC tag. Any further comments, or happy to merge? |
kernel: dwc_otg: checking the urb->transfer_buffer too early See: raspberrypi/linux#3341 kernel: overlays: Make mcp342x run-time compatible See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=258294 kernel: Add Support for simultaneous use of JustBoom DAC and JustBoom Digi based Audio boards See: raspberrypi/linux#3337 kernel: drm/vc4: Correct disabling of render nodes See: raspberrypi/linux#3365 firmware: power: Use Pi4 PMIC values on Pi3+ firmware: Fix filtered handling of array variables See: #1296 firmware: Update libfdt to v1.5.1+ See: raspberrypi/userland#582 firmware: dtoverlay: Extend DT parameter syntax firmware: memorymap: Include FW revision in start.elf userland: mmal: Support 64 bit clients See: raspberrypi/userland#586
kernel: dwc_otg: checking the urb->transfer_buffer too early See: raspberrypi/linux#3341 kernel: overlays: Make mcp342x run-time compatible See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=258294 kernel: Add Support for simultaneous use of JustBoom DAC and JustBoom Digi based Audio boards See: raspberrypi/linux#3337 kernel: drm/vc4: Correct disabling of render nodes See: raspberrypi/linux#3365 firmware: power: Use Pi4 PMIC values on Pi3+ firmware: Fix filtered handling of array variables See: raspberrypi/firmware#1296 firmware: Update libfdt to v1.5.1+ See: raspberrypi/userland#582 firmware: dtoverlay: Extend DT parameter syntax firmware: memorymap: Include FW revision in start.elf userland: mmal: Support 64 bit clients See: raspberrypi/userland#586
kernel: leds: pca963x: Fix open-drain initialization See: raspberrypi/linux#3274 kernel: add BME680 to i2c-sensor overlay See: raspberrypi/linux#3400 kernel: Pisound: MIDI communication fixes for scaled down CPU See: raspberrypi/linux#3396 kernel: pinctrl: bcm2835: Change init order for gpio hogs See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=260600 firmware: Revert mmal: Support 64 bit clients See: raspberrypi/userland#586 firmware: arm_dt/dtoverlay fixes for ARM side camera driver power control
kernel: leds: pca963x: Fix open-drain initialization See: raspberrypi/linux#3274 kernel: add BME680 to i2c-sensor overlay See: raspberrypi/linux#3400 kernel: Pisound: MIDI communication fixes for scaled down CPU See: raspberrypi/linux#3396 kernel: pinctrl: bcm2835: Change init order for gpio hogs See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=260600 firmware: Revert mmal: Support 64 bit clients See: raspberrypi/userland#586 firmware: arm_dt/dtoverlay fixes for ARM side camera driver power control
- firmware: Unicam: Request frequency of 250MHz when running camera use cases - firmware: arm_loader: Fix UART unmapping - firmware: uart1: Revert to the old core-frequency-locking method See: #1267 - firmware: arm_loader: Provide a sensible device_tree_end default See: #1259 - firmware: mmal_ril: Fix size reported on ENOSPC error See: #1269 - firmware: hvs: Trigger the EOLn timer at the field rate when interlaced See: #1227 - firmware: bootloader_state: Add support for a custom TFTP prefix parameter - firmware: arm_loader: GIC stub => 2711 stu - See: #1255 - firmware: arm_loader: Add os_prefix option See: raspberrypi/linux#3237 - firmware: Add support for arbitrary memory specification - firmware: arm_loader: Fix explicit kernel name handling See: #1277 - firmware: Added a new display power mailbox call - firmware: Update display_power gencmd with optional display id See: raspberrypi/linux#3050 - firmware: Remove legacy pkgconfig to avoid Mesa conflicts See: raspberrypi/userland#585 - firmware: Update display_power gencmd with optional display id - firmware: sysman: Fix unsafe check for h264 being enabled See: popcornmix/omxplayer#749 - firmware: platform: Reduce absolute microvolts threshold to 500000 - firmware: tv_server: Also initialise ts queue on composite See: https://forum.kodi.tv/showthread.php?tid=348205 - firmware: Loop to init hotplug - firmware: hdmi: Change HDMI state machine and BVB clocks as turbo clocks - firmware: hdmi: Add EOF timeout to unjam failed mode changes - firmware: platform: Differentiate between boostable and turbo clocks - firmware: arm_dt: Set WL_ON and BT_ON from .dtb - firmware: Fixup chosing of bit depth in legacy graphics See: raspberrypi/linux#3331 - firmware: vec: Setup WideScreen Signalling outside of copy protection See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=256489 - firmware: Add global reset mailbox - firmware: 2711: De-couple start.elf clock setup from the bootloader - firmware: scaler: Correct defines for SCALER_POS0_START_Y_[MASK|SHIFT] (HVS4) - firmware: platform: Fix missing HDMI PHY power down bit - firmware: Reduce voltage as part of DVFS - firmware: arm-loader: Inherit 2711 mac-address from the bootloader See: http://git/vc4/vc4/merge_requests/687 - firmware: arm_loader: Respect all required frequencies when throttling - firmware: Fixup vcgencmd display_power return values - firmware: platform: Allow fixed voltage with avs_disable=1 - firmware: EMMC: Use PLLD for EMMC for 250MHz host-clock See: #1289 - firmware: platform: Round down effective frequencies when they exceed max See: #1290 - firmware: arm_loader: Pass video mode via kernel command for composite See: #1285 - firmware: Fix lens shading table generation buglet See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=190586&start=75#p1534672 - firmware: hdmi: Use RB2 timing for 2560x1440@60 if pixel clock is 241.5 MHz - firmware: arm_dt: Look for ethernet0 before ethernet - firmware: arm_dt: Set PCIe dma-ranges from memory size - firmware: hdmi: HDMI SM clock must not run slower than audio MAI clock See: #1295 - firmware: arm_loader: Pass video mode via kernel command for composite (master) See: #1285 - firmware: power: Use Pi4 PMIC values on Pi3+ - firmware: Fix filtered handling of array variables See: #1296 - firmware: Update libfdt to v1.5.1+ See: raspberrypi/userland#582 - firmware: dtoverlay: Extend DT parameter syntax - firmware: memorymap: Include FW revision in start.elf - firmware: Fixup for vcgencmd display_power See: #1224 - firmware: Add hdmi_wifi_pixel_freq_adj config option - firmware: Revert mmal: Support 64 bit clients See: raspberrypi/userland#586 - firmware: arm_dt/dtoverlay fixes for ARM side camera driver power control - firmware: arm_ldconfig: Support multiple initramfs files See: #1318 - firmware: Add support for backlight enable - firmware: master: arm_ldconfig: Support multiple initramfs files See: #1318 - firmware: power: Make pmicrd/pmicwr available to all - firmware: platform: Only throttle down from arm_freq - firmware: platform: Bump desired ring osc to 3.7 on Pi3/CM3 - firmware: arm_loader: Add 2ms delay before resetting SD_IO - firmware: isp/tuner: Resetting to a lamp mode cancels manual_gains_used_ - firmware: board_info: Fix uninitialised phy_addr handling in network boot - firmware: IL video_decode: Default to H264 as MPEG4 isn't supported - firmware: IL egl_render: Fail the create on Pi4 - firmware: arm_dispmanx: Column pitch for YUV10COL is in lines not bytes - firmware: platform: 2711: Also add chicken bits to dvfs voltage - firmware: MMAL / video_render: Allow column stride to be set on column formats - firmware: vc_image/video_decode: Move +16 lines for di_adv from vc_image to decoder - firmware: platform: 2711: Support overclocking gpu frequencies See: #1290 - firmware: gencmd: Fix measure_clock name for CLOCK_OUTPUT_108 - firmware: mmal isp: Remote alignment requirements for RGB24 formats - firmware: Add missing flags for VC_IMAGE_PROP_YUVUV_4K_CHROMA_ALIGN - firmware: platform: Compromise on gpu overclock settings See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=262649&start=100#p1610362 - firmware: Add the ability to export labels from overlays - firmware: loader: 4-byte align initramfs blocks See: #1318 - firmware: vd3/video_decode: Do not add 16 lines of context when video is 1920 tall See: #1334 - firmware: Allow use of 24 bit framebuffers See: #1338 - firmware: arm_loader: Add non-os_prefix cmdline.txt fallback - firmware: board_info: Set board-info memory size according to SDRAM mode registers - firmware: arm_loader: Treat min frequencies as optional See: https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=264786 - firmware: arm_loader: Add overvoltage_delta for manufacture tests - firmware: Support Isp stats and params - firmware: arm_loader: Make EMMC2 dma-ranges patch more tolerant - firmware: bootromfs: Delete unwanted assert - firmware: usb_eth: Increase timeouts for TFTP requests and retransmit ACK - firmware: isp component: rtos_common_mem: Fix handle acquire usage with wrap handles - firmware: il: video_render: Require 4k chroma alignment on YUVUV transpose See: #1334 - firmware: vc_image: Don't align the YUVUV pitch to SDRAM pages if not aligning to 4k See: raspberrypi/linux#3492 - firmware: isp component: rtos_common_mem: Fix smallalloc test in mem_handle_acquire_if_valid - firmware: platform: 2711: Make chicken-bit pip size vary with pmic quantum - firmware: USB device boot for CM4 - firmware: arm_loader: Add SET_LAUNCH_VPU1 mailbox message - firmware: il: camera: Add config.txt param awb_auto_is_greyworld for NoIR camera See: #1167 - firmware: arm_loader: Provisional support for high peris - firmware: arm_loader: Only add margins to cmdline if non-zero - firmware: clock: Support clock_measure_pll on pi0-3 - firmware: platform: Back to CLOCK_PLL_CHAN_CPER for emmc on pi0-3 - firmware: gpu_server: Fixup after LAUNCH_VPU1 commit - firmware: power: Add a notch to compensate for trim on 2835 - firmware: isp/tuner: Resetting to a lamp mode cancels manual_gains_used_ (master) - firmware: armstubs: Rebuild with latest source - firmware: arm_loader: Avoid resetting the GPIO expander - firmware: vcos_genversion: Fix up legacy variant names - firmware: dtoverlay: Add overlay_map functionality See: raspberrypi/linux#3520 - firmware: isp_tuner: Add in the slave AWB tuner handling - firmware: arm_dt: Apply os_prefix to device_tree= files - firmware: clock_2711: Fix PLL analog setup - firmware: board_info: Also include CM3+ for pmic trait See: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=267576&start=25#p1643032 - firmware: Switch to building from common firmware branch - firmware: isp: make AGC metering respect the (digital zoom) crop region - firmware: Avoid linking in khronos on Pi4 - firmware: clock: Reset PLLC after switching VPU to OSC - firmware: arm_loader: Make 4GB available if arm_peri_high - firmware: arm_loader: Complete arm_peri_high support See: #1374 - firmware: board_info: Split Model B into rev1 and rev2 See: raspberrypi/linux#3537 - firmware: power: Clamp voltage to platform limits for all power supplies - firmware: isp: Ensure lens shading (LS) is enabled when a valid LS table is received - firmware: otp: Fix advanced boot row definition - firmware: bootcode: Fix issue booting with webcams - firmware: isp: fix ISP component to return non-zero focus FoMs - firmware: Fix for IMX477 focal length, f_number and aperture - firmware: Update firmware for USB MSD boot - firmware: platform: Fix overflow on high arm overclocks - firmware: video_encode: Add option to include header bytes with frame - firmware: DSI display: Close I2C handle if the display doesn't probe - firmware: mmal/vc: Add mapping for OMX_IndexConfigBufferStall / MMAL_PARAMETER_VIDEO_STALL_THRESHOLD See: https://www.raspberrypi.org/forums/viewtopic.php?f=70&t=273123&p=1655481 - firmware: hdmi: Request an I2C interrupt for EDID reading - firmware: i2c: Move using_interrupt flag into periph_setup - firmware: camera: Latency reduction for captures - firmware: IL camera fixes for reduced startup time - firmware: mmal_ril: Correct a use of portdef.video to portdef.image - firmware: vc_image: SDRAM page alignment is optional for YUV10_COL See: https://forum.libreelec.tv/thread/21985-noise-artefacts-when-playing-back-4k-hevc-video-on-rpi4-le-9-2-1-no-problems-on/ - firmware: imx477: Correct the logic for extending hblank on long exposures - firmware: il: isp: Ensure HR output is active and ISP is open before starting a frame - firmware: isp_ctrl: Fail in start_[raw|yuv]_frame if ISP is not idle See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=275489 - firmware: vcfw: Fix PMIC max voltage See: https://forum.libreelec.tv/thread/22097-libreelec-leia-9-2-3 - firmware: ISP raw14 and mono input, 16bpc YUV output. Camera subsystem not messing with GPIO0 - firmware: isp: fix assert from initial setting of ISP denoise parameters - firmware: arm_ldconfig: Don't pad initramfs files See: #1395 - firmware: board_info: Add and use BT_FLOWCONTROL trait - firmware: logging: Add missing checks for uart_output_enabled - firmware: host_applications: Install debug_sym.h - firmware: logging: Inherit uart_2ndstage config from the bootloader - firmware: Fix Pi4 regression in previous build - firmware: platform: Resolve BT flow control contention See: Hexxeh/rpi-firmware#227 - firmware: hdmi: Limit the valid CEA modes to those defined in the table See: https://forum.libreelec.tv/thread/22135-regression-raspberry-pi-3-hdmi-output-broken-after-upgrade-to-9-2-x - firmware: imx477: Add switch to allow switching of on-sensor DPC - firmware: hdmi: Set HD_CTL_WHOLSMP and HD_CTL_CHALIGN_SET See: https://forum.kodi.tv/showthread.php?tid=354589 - firmware: arm_ldconfig: Honour the kernel8 text offset See: #1415 - firmware: jpeghw: Skip repeated 0xFF padding bytes between markers See: RPi-Distro/vlc#8 - firmware: arm_loader: Allow interlaced HDMI modes from FKMS See: raspberrypi/linux#3698 - firmware: arm_loader: Limit rather than reject boosts with disable_auto_turbo - firmware: i2c: Clearing the TA bit may time out See: #1422 - firmware: arm_loader: Add an accelerated memmove - firmware: arm_loader: memmove kernel to preferred text_offset See: #1421 - firmware: filesystem: Fix GPT regression on USB after SD fix See: #1420 - firmware: arm_loader: Don't enable the ARM USB IRQ See: raspberrypi/linux#3703 - firmware: hdmi: Remove M2MC/BVB min turbo clock request - firmware: IL: camera: Fix stereoscopic pool allocations - firmware: arm_loader: Add support for double clock/pixel_rep for FKMS See: raspberrypi/linux#3725 - firmware: scalerlib: Set the default chroma location for YUV10 to match 8bit - firmware: scalerlib: Set chroma_vrep correctly for YUV10COL - firmware: isp: check the hi-res resize filter mode when the input crop changes - firmware: arm_loader: Knock 1.7 seconds off boot time See: #1375 - firmware: Imx477 external sync signals - firmware: bootloader: Some tweaks for LED, UART, USB timeouts - firmware: platform: Avoid vco issue with low arm_freq_min on Pi0-3 See: #1431 - firmware: arm_loader: Don't try to load to 0 a.k.a. NULL See: #1445 - firmware: armstub7: Configure the top 32 STB interrupts - firmware: dispmanx: Remove elements cleanly that are totally offscreen negatively See: raspberrypi/linux#3735 - firmware: hdmi: Set the altered mode, not the caller's mode See: #1446 - firmware: dt-blob: Declare CM4 GPIO expander pins - firmware: clocks: Make frequency_t 64-bit - firmware: Revert frequency_t: Make 64-bit - firmware: ISP/tuner: Increase max exposure time for fixed ISO modes on IMX219 and 477 See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=281603 - firmware: sdhost_arasan: Ignore DCRC after CMD12 See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=282928 - firmware: firmware: frequency_t: Make 64-bit - firmware: pi4: allow pllb changes while running See: #1431 - firmware: board_info: Give the CUSTOM boards the PMIC_NCP6343 trait - firmware: dispmanx/displays: Allow both DPI and DSI displays simultaneously - firmware: imx477: Release the I2C semaphore once finished, not before - firmware: clock: Allow overclocking pllb See: raspberrypi/linux#3823 - firmware: hdmi/edid: Reduce the bias to all but the first detailed timing - firmware: hdmi/edid: Add option to ignore any odd horizontal timings on Pi4 - firmware: sdcard: Hybrid MBR - only select GPT if it is the first primary partition See: #1465 - firmware: audioplus: Avoid broken audio when requesting hdmi audio device when using composite display See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=283639 - firmware: platform: Add support for SCB clock and set to 250MHz - firmware: Revert arm_loader: Move first call to set_turbo after arm->start - firmware: arm_ldconfig: GZIP-compressed ARMv8 kernel support - firmware: arm_ldconfig: Restore the fallback load address See: #1467 - firmware: ilcamera: Disable timeouts on trigger sink devices - firmware: genet: Flush RBUF/TBUF and clear mac-address on stop See: raspberrypi/linux#3850 - firmware: dmalib: Add support for 40-bit 2d memcpy - firmware: sdcard: Reduce SD read overhead - firmware: sdhost_arasan: Increase time threshold before suspend - firmware: video_decode: Only shutdown codec on both ports being disabled - firmware: vc_image_helper: Avoid misaligned exception due to uninitialised pointer - firmware: arm_loader: Make arm clock accesses only see their own boosts See: #1469 - firmware: arm_loader: enable simple_fb iff there is a display See: raspberrypi/linux#3878 - firmware: arm_loader: Mark V3D early boost as for the ARM See: #1469 - firmware: arm_loader: Update armstubs with those from PR 117 See: raspberrypi/tools#117 - firmware: Revert sdcard: Reduce SD read overhead - firmware: arm_loader: Add GET/SET_VPU_VECTOR mailbox calls - firmware: arm_ldconfig: Don't invalidate the dcache for most of memory See: #1445 - firmware: arm_loader: Allow arm to see force_turbo and uart boosts - firmware: hdmi: Timeout HDMI EDID reads - firmware: pwm_sdm: move modulator to VPU0 See: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=195178&p=1723639 - firmware: Add tryboot mechanism to provide a fallback if an OS upgrade fails - firmware: camplus: stills_denoise: Release the VRF between iterations - firmware: vc_image: Further fixup of fix_alignment See: #1334 - firmware: arm_loader: Support large PCIe window with <8GB RAM See: https://www.raspberrypi.org/forums/viewtopic.php?p=1759627#p1759627 - firmware: filesys: Close the brfs from filesys_power(..., 0) - firmware: platform: Avoid vco issue with low arm_freq_min on Pi0-3 See: #1431 - firmware: video_encode: Allow level 5.0 and 5.1 See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=291447 - firmware: xhci: Don't reset BCM2711 XHCI from filesys in start.elf - firmware: bootcode.bin: Add support for tryboot - firmware: Switch DA9121 PMIC to PWM mode when ARM > 600 MHz - firmware: arm_dt: Handle parent interrupt controllers when masking - firmware: config: Add cm4 and pi400 config section filters - firmware: MMAL/IL/ISP component: Set the ISP boost frequency once on open - firmware: sdcard: Remove legacy NOOBS support to support booting from primary partition 4 - firmware: arm_loader: Move 2711 RAM to PCIe address 16GB - firmware: video_decode: Add parameter to disable timestamp validation - firmware: Imx477 camera tuning fixes See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=291032#p1770287 See: https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=291032&start=25#p1771066 - firmware: Use DMA40 for PWM audio - firmware: imx477: Replace existing 720p120 mode with a new 1332x990 120fps mode - firmware: arm_loader: Allow max_framebuffers=0 to disable framebuffers See: #1507 - firmware: dmalib: Allow sdcard to borrow channel 6 See: #1511 See: Hexxeh/rpi-firmware#251 See: https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=294932 - firmware: DSI interrupt fixes, and HDMI SM clock for deep colour - firmware: dmalib: Keep 40-bit DMA clear of L2 alias - firmware: audioplus: Fix hang when switching destination See: #1516 - firmware: HAT/I2C updates - firmware: MMAL/IL: Add support for the 16bpp Bayer/Grey raw 10/12/14 formats - firmware: Revert firmware: HAT/I2C updates - firmware: firmware: MMAL/IL: Add support for the 16bpp Bayer/Grey raw 10/12/14 formats - Firmware: undo previous reverts
This has only had the briefest of testing, but raspistill is capturing JPEGs OK.