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

add support for Raspberry Pi 4 #3597

Merged
merged 17 commits into from
Jul 3, 2019
Merged

Conversation

HiassofT
Copy link
Member

port of #3596 with separate raspberrypi-4.19 kernel and without kodi patches

@HiassofT
Copy link
Member Author

RPi 4.19 kernel with RPi4 support is now up on official kernel repo, I've fixed the SHA256 to match that

@@ -12,6 +12,9 @@
TARGET_CPU="arm1176jzf-s"
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
TARGET_CPU="cortex-a7"
elif [ "$DEVICE" = "RPi4" ]; then
TARGET_CPU="cortex-a53"
Copy link
Contributor

Choose a reason for hiding this comment

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

TARGET_CPU="cortex-a72" ? Will need config/arch.arm updated too.

Copy link
Member Author

Choose a reason for hiding this comment

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

I've been testing with cortex-a72 but that lead to gdb spinning forever on a backtrace (eg when crashlog is created or when manually doing "thread apply all bt")

      Thread 15 (Thread 0xa51bc370 (LWP 539)):
      #0  futex_abstimed_wait_cancelable (private=0, abstime=0xa51bb930, expected=0,
          futex_word=0x3884df8) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
      #1  __pthread_cond_wait_common (abstime=0xa51bb930, mutex=<optimized out>,
          cond=0x3884dd0) at pthread_cond_wait.c:539
      #2  __pthread_cond_timedwait (cond=0x3884dd0, mutex=0x0, abstime=0xa51bb930)
          at pthread_cond_wait.c:667
      #3  0x008b6130 in ?? ()
      #4  0x008bd58c in ?? ()
      #5  0x008219ac in XBMCAddon::xbmc::Monitor::waitForAbort(double) ()
      #6  0x0084fbac in ?? ()
      #7  0xb6c0a018 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0
      #8  0xb6c0a018 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0
      #9  0xb6c0a018 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0

As we didn't have the time to investigate this issue further I went back to cortex-a53 which didn't show this behaviour.

But I agree, we will need to revisit this at some point and if the issues are solved we can switch to cortex-a72

Copy link
Contributor

@antonlacon antonlacon Jun 24, 2019

Choose a reason for hiding this comment

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

TARGET_CPU_FLAGS="+crc" should go in here too.

Please ignore, I need more sleep. ha

Copy link
Member Author

Choose a reason for hiding this comment

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

TARGET_CPU_FLAGS="+crc" is already there, in the next line :-)

@lrusak
Copy link
Member

lrusak commented Jun 24, 2019

Please drop the ffmpeg HEVC patches

@HiassofT
Copy link
Member Author

@lrusak I've dropped all ffmpeg patches from the PR.

This wil build ffmpeg for RPi4 with --disable-rpi which I think is the right thing to do as we neither need mmal acceleration nor the RPi0-3 specific HEVC stuff (which won't work on RPi4 anyways).

@@ -107,7 +107,7 @@ get_graphicdrivers() {
fi

if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then
GALLIUM_DRIVERS+=" vc4"
GALLIUM_DRIVERS+=" vc4 v3d kmsro"
Copy link
Contributor

Choose a reason for hiding this comment

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

The previous RPi's will presumably shift to vc4 at some point, so this should be behind a if $DEVICE = RPi4?

Copy link
Member Author

Choose a reason for hiding this comment

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

enabling v3d and kmsro drivers won't have a negative impact on older RPis (except for wasting a bit of space) and I'd rather keep PROJECT/DEVICE selection out of common config files and scripts like this, if possible

@antonlacon
Copy link
Contributor

Merged into my RPi3 branch and built/ran without issue. Looks ok to me aside from what was noted. Cheers.

@HiassofT
Copy link
Member Author

I've updated bcmstat and brcmfmac_sdio-firmware-rpi commits to drop the local patches and update to latest versions instead.

Kernel is now at 4.19.56 and firmware at Jun 25 (latest versions from official RPi repos)

@HiassofT
Copy link
Member Author

HiassofT commented Jun 27, 2019

updated with noobs fixes from #3610 and bumped firmware to latest version as in #3605

Edit: noobs install succefully tested on RPi4

@HiassofT
Copy link
Member Author

I've added WIP label,

@MilhouseVH looked into kernel 5.1 options and this seems to be working well so it's best to head straight to current LE master kernel version without a detour to kernel 4.19.

The current kernel 5.1 WIP version of this PR is here: https://github.com/HiassofT/LibreELEC.tv/tree/le10-rpi4-kernel51, when we have an RPi kernel 5.1 with RPi4 support in master I'll switch this PR to a rebased version of that tree.

@HiassofT
Copy link
Member Author

HiassofT commented Jul 2, 2019

I've switched RPi4 to use kernel 5.1.15.

Note: this PR now depends on the linux-5.1.15 bump PR #3567

Signed-off-by: Matthias Reichl <hias@horus.com>
bcm2835-driver provides various tools like vcdbg and tvservice

Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
Otherwise builder user ID will leak in and storage partition
will be owned by that instead of root and lots of services
will fail to start.

Signed-off-by: Matthias Reichl <hias@horus.com>
This makes it easier to drop the property if it's not set.

Signed-off-by: Matthias Reichl <hias@horus.com>
… is set

Signed-off-by: Matthias Reichl <hias@horus.com>
Use raspberrypi kernel and upstream kodi with gbm/vc4.

Thanks to Milhouse for providing 5.1 kernel config!

Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
…an Buster image

Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Matthias Reichl <hias@horus.com>
libopenmaxil links against libbrcmEGL.so and libbrcmGLESv2.so so
these libs should not be filtered out.

Signed-off-by: Matthias Reichl <hias@horus.com>
Several 4k HEVC files were reported to play with artifacts unless
gpu mem is bumped to at least 288MB. Use 320MB for now to have a bit
more headroom, just in case.

Unfortunately this can't be changed via distroconfig.txt so we have
to do it in config.txt.

Also drop the disable_overscan block as that's enabled by default
via distroconfig.txt.

Signed-off-by: Matthias Reichl <hias@horus.com>
@HiassofT
Copy link
Member Author

HiassofT commented Jul 3, 2019

Rebased on top of LE master and runtime tested on RPi4.

This should be good to go in now.

@MilhouseVH MilhouseVH merged commit 26c5f76 into LibreELEC:master Jul 3, 2019
@HiassofT HiassofT deleted the le10-rpi4 branch January 16, 2021 23:33
HiassofT referenced this pull request Jan 24, 2021
Signed-off-by: Matthias Reichl <hias@horus.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants