Skip to content
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

Merged
merged 4 commits into from
Dec 11, 2019
Merged

64bit MMAL support #586

merged 4 commits into from
Dec 11, 2019

Conversation

6by9
Copy link
Contributor

@6by9 6by9 commented Oct 24, 2019

This has only had the briefest of testing, but raspistill is capturing JPEGs OK.

@6by9
Copy link
Contributor Author

6by9 commented Oct 24, 2019

Posted for basic testing.
I'm aware of an issue that the client_context handles aren't released on port disable, so not in a state that can be merged. I also haven't checked how the firmware build copes with the header changes, so there will need to be a follow up there.

@6by9
Copy link
Contributor Author

6by9 commented Oct 25, 2019

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.

sakaki- added a commit to sakaki-/genpi64-overlay that referenced this pull request Oct 25, 2019
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 =
Copy link

@sakaki- sakaki- Oct 25, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@6by9

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.

Copy link
Contributor Author

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).

sakaki- added a commit to sakaki-/genpi64-overlay that referenced this pull request Oct 26, 2019
@sakaki-
Copy link

sakaki- commented Oct 26, 2019

Hi @6by9,

so, on the basis of very preliminary testing, mmal now seems usable from a 64-bit userland, for h264 decoding at any rate ^-^

I've built the raspberrypi-userland-1.20191025-r1 package with your patch (tweaked very slightly so it builds non-debug, per comment above), and then rebuilt ffmpeg-4.2-r1 with the mmal USE flag. After this I was able to successfully play videos using e.g.:

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 mmal codec since it outputs a number of did not get output frame from MMAL messages to the console at the end of the stream). Also decodes other h264 files with audio etc.

Haven't tried capture or transcoding yet.

This is on a gentoo-on-rpi-64bit system, with bcm2711-kernel-bis-bin-4.19.80.20191022 (and - because of the way this kernel package is set up - by default the boot firmware will also be whatever was current as of that date).

hth, sakaki

@@ -0,0 +1,240 @@
/*
Copy link
Contributor

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;
}

Copy link
Contributor

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.

Copy link
Contributor Author

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.

Copy link
Contributor

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.

Copy link
Contributor Author

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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is indentation screwy here?

Copy link
Contributor

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;
}
Copy link
Contributor

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)

Copy link
Contributor Author

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.

@6by9
Copy link
Contributor Author

6by9 commented Oct 28, 2019

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.
The firmware changes aren't required for any functionality, only to bring the RPC structures into sync.

@popcornmix
Copy link
Contributor

Does firmware side require a rebuild?
A sanity check with (32-bit) kodi seemed to work initially.
It got a bit chattier (mmalipc) but it hung when stopping video playback.
An interlaced video failed to start.

@6by9
Copy link
Contributor Author

6by9 commented Oct 28, 2019

As above, the firmware shouldn't need changing at all.
I hadn't remembered adding additional logging except for the debug commit on the top to try and head off leaks.
I'll try Kodi for myself when I'm back in the office. I suspect that is making greater use of events than my tests.

@popcornmix
Copy link
Contributor

mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 1 in use for context 0x74c8d340
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 2 in use for context 0x63618d40
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 2 entries in use
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 1 in use for context 0x63408378
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 2 in use for context 0x63614104
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 3 in use for context 0x63614248
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 4 in use for context 0x63613fc0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 5 in use for context 0x63613e7c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 6 in use for context 0x63613d38
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 7 in use for context 0x63613bf4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 8 in use for context 0x63613ab0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 9 in use for context 0x6361396c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 10 in use for context 0x63613828
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 11 in use for context 0x636136e4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 12 in use for context 0x636135a0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 13 in use for context 0x6361345c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 14 in use for context 0x63613318
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 15 in use for context 0x636131d4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 16 in use for context 0x63613090
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 17 in use for context 0x63612f4c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 18 in use for context 0x63612e08
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 19 in use for context 0x63612cc4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 20 in use for context 0x63612b80
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 21 in use for context 0x63612a3c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 22 in use for context 0x636128f8
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 23 in use for context 0x636127b4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 24 in use for context 0x63612670
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 25 in use for context 0x6361252c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 26 in use for context 0x636123e8
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 27 in use for context 0x636122a4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 28 in use for context 0x6365ad18
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: 28 entries in use

@6by9
Copy link
Contributor Author

6by9 commented Oct 28, 2019

All from 605fe8e "Debug for context and component mappings".
Sorry, forgot to add a "Do not merge" into the commit message, but wasn't worrying as I'd tagged the PR as RFC.

I'm just hoping that on a clean exit you end up with 0 entries in use.

@popcornmix
Copy link
Contributor

kodi-rbpi: /home/dom/xbmc_holder/xbmc/xbmc/cores/VideoPlayer/DVDCodecs/Video/MMALCodec.cpp:223: void MMAL::CMMALVideo::dec_output_port_cb(MMAL_PORT_T*, MMAL_BUFFER_HEADER_T*): Assertion `omvb' failed.

Got one of these, which suggests the callback pointer I passed in wasn't returned as expected.

@popcornmix
Copy link
Contributor

assertion failure:/home/dom/projects/vc4/interface/mmal/vc/mmal_vc_client.c:212:mmal_vc_lookup_client_context():client_context_pool.contexts[index].inuse

@6by9
Copy link
Contributor Author

6by9 commented Oct 29, 2019

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.

@6by9
Copy link
Contributor Author

6by9 commented Nov 11, 2019

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.

sakaki- added a commit to sakaki-/genpi64-overlay that referenced this pull request Nov 23, 2019
Add explict mmal dep on >=media-libs/raspberrypi-userland-1.20191121
(which includes raspberrypi/userland#586)
@sakaki-
Copy link

sakaki- commented Nov 27, 2019

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

@popcornmix
Copy link
Contributor

@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.
Software decode seems fine. H264 has a lot of green corruption. Possibly caching coherency issues, possibly lost encoded data bytes.

Example output after playing H264.

mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 1 in use for context 0xef9f75d0
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 2 in use for context 0xe52244f0
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 2 entries in use
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 1 in use for context 0xef9f8bd8
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 2 in use for context 0xe520a4d0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 3 in use for context 0xe520ac68
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 4 in use for context 0xe520ab24
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 5 in use for context 0xe520a9e0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 6 in use for context 0xe520a89c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 7 in use for context 0xe520a758
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 8 in use for context 0xe520a614
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 9 in use for context 0xe520a38c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 10 in use for context 0xe520a248
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 11 in use for context 0xe520a104
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 12 in use for context 0xe5209fc0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 13 in use for context 0xe5209e7c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 14 in use for context 0xe5209d38
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 15 in use for context 0xe5209bf4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 16 in use for context 0xe5209ab0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 17 in use for context 0xe520996c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 18 in use for context 0xe5209828
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 19 in use for context 0xe52096e4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 20 in use for context 0xe52095a0
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 21 in use for context 0xe520945c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 22 in use for context 0xe5209318
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 23 in use for context 0xe52091d4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 24 in use for context 0xe5209090
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 25 in use for context 0xe5208f4c
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 26 in use for context 0xe5208e08
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 27 in use for context 0xe5208cc4
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 28 in use for context 0xef98af18
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: 28 entries in use
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 0 in use for context 0xedb09460
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 2 in use for context 0xe52244f0
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 2 entries in use
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 0 in use for context 0xedb09878
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 28 in use for context 0xef98af18
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: 2 entries in use
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: Entry 2 in use for context 0xe52244f0
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 1 entries in use
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: Entry 28 in use for context 0xef98af18
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: 1 entries in use
mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 0 entries in use
mmalipc: mmal_vc_dump_client_contexts: mmal_vc_dump_client_contexts: 0 entries in use

@6by9 6by9 mentioned this pull request Dec 2, 2019
@jordanjohnp
Copy link

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:

mmalipc: mmal_vc_dump_client_components: mmal_vc_dump_client_components: 0 entries in use

Not sure if this is the right place to provide such feedback, but thanks 6by9!

@6by9
Copy link
Contributor Author

6by9 commented Dec 5, 2019

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.

@popcornmix
Copy link
Contributor

@6by9 I'm okay with getting this merged. I didn't spot any regressions and it made some 64-bit use cases work better.

@6by9
Copy link
Contributor Author

6by9 commented Dec 6, 2019

Sorry, I've noticed that I've got a couple of minor updates on my working tree.

Three main things:

  • condensing index and inuse to being unsigned int inuse:1; unsigned int index:31 as inuse is effectively a bool, and index will never exceed MAX_CLIENT_CONTEXTS or MAX_COMPONENT_HANDLES
  • Having saved that memory, increasing MAX_COMPONENT_HANDLES to 128 (was 64), and MAX_CLIENT_CONTEXTS to 512 (was 128). At 8 bytes an entry now those tables are still only 5kB in size.
  • Handle a client context lookup for buffers with has_reference set. I'm not 100% clear on the use case and whether it is actively used, but I think I understand it well enough. (Things like a splitter component that is just passing out a reference to the input buffer to each output. The output buffers get a reference set against the input buffer to manage lifetime).

I'll drop/disable the debug patches, and add those changes in.

@6by9
Copy link
Contributor Author

6by9 commented Dec 6, 2019

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.
mmal_event_format_changed_get throws an error that the buffer size is insufficient for the message.

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.
@6by9
Copy link
Contributor Author

6by9 commented Dec 9, 2019

  • MMAL_EVENT_FORMAT_CHANGED fixed (see 6by9@7803a86 for the change required).
  • Debug logging dropped.
  • Changes squashed into one.

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?

@6by9 6by9 changed the title RFC: 64bit MMAL support 64bit MMAL support Dec 9, 2019
@popcornmix popcornmix merged commit 7d3c6b9 into raspberrypi:master Dec 11, 2019
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Dec 11, 2019
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
popcornmix added a commit to Hexxeh/rpi-firmware that referenced this pull request Dec 11, 2019
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
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Jan 10, 2020
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
popcornmix added a commit to Hexxeh/rpi-firmware that referenced this pull request Jan 10, 2020
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
mkreisl added a commit to xbianonpi/xbian-package-firmware that referenced this pull request Jan 12, 2021
- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants