diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..7c4705ccf329878d30d71b2d3bf5648d71c5f1ec --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +RELEASE-NOTES.md merge=union diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f356980f06ec748dd9efccdfb7ebb0e632fc863e..8ad6ae7108d757d8b102a0906590e77fb03a422b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -213,35 +213,19 @@ appimage-amd64: - WORKDIR="$(pwd)" CCACHE="true" OUTPUTDIR="$(pwd)/output" - mkdir -p ${OUTPUTDIR} - docker build -t "recalbox-${ARCH}" . - - docker run --rm --tmpfs /tmp:exec --security-opt seccomp=unconfined -v "${WORKDIR}:/work" -v "${OUTPUTDIR}:/work/output" -v "/recalbox-builds/dl:/share/dl" -v "/recalbox-builds/ccaches/ccache-${ARCH}:/share/ccache" -e "ARCH=${ARCH}" -e "GITLAB_TOKEN_RB5000=${GITLAB_TOKEN_RB5000}" -e "GITLAB_TOKEN_BEEBEM=${GITLAB_TOKEN_BEEBEM}" -e "GITLAB_TOKEN_THEMES=${GITLAB_TOKEN_THEMES}" -e "RECALBOX_VERSION=${RECALBOX_VERSION}" -e "RECALBOX_CCACHE_ENABLED=${CCACHE}" "recalbox-${ARCH}" 2>&1 | tee build.log | grep '>>>' || tac build.log | grep '>>>' -m 1 -B 9999 | tac + - docker run --rm --tmpfs /tmp:exec --security-opt seccomp=unconfined -v "${WORKDIR}:/work" -v "${OUTPUTDIR}:/work/output" -v "/recalbox-builds/dl:/share/dl" -v "/recalbox-builds/ccaches/ccache-${ARCH}:/share/ccache" -e "ARCH=${ARCH}" -e "GITLAB_TOKEN_RB5000=${GITLAB_TOKEN_RB5000}" -e "GITLAB_TOKEN_BEEBEM=${GITLAB_TOKEN_BEEBEM}" -e "GITLAB_TOKEN_THEMES=${GITLAB_TOKEN_THEMES}" -e "RECALBOX_VERSION=9.2.3-Pulstar" -e "RECALBOX_CCACHE_ENABLED=${CCACHE}" "recalbox-${ARCH}" 2>&1 | tee build.log | grep '>>>' || tac build.log | grep '>>>' -m 1 -B 9999 | tac - echo $? # Dist - export DIST_DIR="dist/${ARCH}" - mkdir -p "${DIST_DIR}" - cp ${OUTPUTDIR}/images/recalbox/* "${DIST_DIR}" - - echo "${RECALBOX_VERSION}" > "${DIST_DIR}/recalbox.version" + # forcing 9.2.3 to avoid updates + - echo "9.2.3-Pulstar" > "${DIST_DIR}/recalbox.version" - cp ${WORKDIR}/CHANGELOG.md "${DIST_DIR}/recalbox.changelog" - cp ${WORKDIR}/RELEASE-NOTES.md "${DIST_DIR}/recalbox.releasenotes" - cp ${WORKDIR}/RELEASE-NOTES-FULL.md "${DIST_DIR}/RELEASE-NOTES-FULL.md" - uploadFolderToBucket "${AWS_ACCESS_KEY_ID}" "${AWS_SECRET_ACCESS_TOKEN}" "recalbox-builds-artifacts" "dist" "${CI_PIPELINE_ID}" - # Specific image for RPIZero 1 + GPICASE2w - - | - if [ "${ARCH}" == "rpi1" ];then - sed -i "s/^;case=.*/case=GPi2W/g" output/images/boot-data/recalbox-boot.conf - docker run --rm --tmpfs /tmp:exec --security-opt seccomp=unconfined -v "${WORKDIR}:/work" -v "${OUTPUTDIR}:/work/output" -v "/recalbox-builds/dl:/share/dl" -v "/recalbox-builds/ccaches/ccache-${ARCH}:/share/ccache" -e "ARCH=${ARCH}" -e "GITLAB_TOKEN_BEEBEM=${GITLAB_TOKEN_BEEBEM}" -e "GITLAB_TOKEN_THEMES=${GITLAB_TOKEN_THEMES}" -e "RECALBOX_VERSION=${RECALBOX_VERSION}" -e "RECALBOX_CCACHE_ENABLED=${CCACHE}" "recalbox-${ARCH}" 2>&1 | tee build.log | grep '>>>' || tac build.log | grep '>>>' -m 1 -B 9999 | tac - OLD_DIST_DIR="${DIST_DIR}" - export DIST_DIR="dist/${ARCH}-gpicase2w" - mkdir -p "${DIST_DIR}" - cp ${OUTPUTDIR}/images/recalbox/* "${DIST_DIR}" - echo "${RECALBOX_VERSION}" >> "${DIST_DIR}/recalbox.version" - cp ${WORKDIR}/CHANGELOG.md "${DIST_DIR}/recalbox.changelog" - cp ${WORKDIR}/RELEASE-NOTES.md "${DIST_DIR}/recalbox.releasenotes" - cp ${WORKDIR}/RELEASE-NOTES-FULL.md "${DIST_DIR}/RELEASE-NOTES-FULL.md" - uploadFolderToBucket "${AWS_ACCESS_KEY_ID}" "${AWS_SECRET_ACCESS_TOKEN}" "recalbox-builds-artifacts" "dist" "${CI_PIPELINE_ID}" - rm -rf "${DIST_DIR}" "${OLD_DIST_DIR}" "${OUTPUTDIR}" - else - rm -rf "${DIST_DIR}" "${OUTPUTDIR}" - fi + - rm -rf "${DIST_DIR}" "${OUTPUTDIR}" artifacts: name: dist-${ARCH}-${CI_PIPELINE_ID} when: always diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7b0e96e898284df1a007ac989038f5cc2522c90b..1e4e2dde25f5c922a44ad7f61ae0cd46f2876a14 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,6 +4,20 @@ This file will be processed and will be distributed with Recalbox Releases. The text, located between the first `## Version XXX` and the second one, will appear as release notes for end user on a Recalbox upgrade. +## Version 9.2.3-Pulstar-RPi5-2GB + +- Add support for Raspberry Pi 5 2GB version + +## Version 9.2.3-Pulstar + +- Fix volume level for flycast core (atomiswave, naomi, naomicd, naomi2) +- Fix data files, and game recognition in systems using Flycast & Flycast-Next cores +- Fix scraper not saving all gamelists when scraping virtual systems +- Fix multiple update pop when exiting screensaver +- Fix immediate update check after relaunching the interface +- Fix crash/freeze with auto-scraper conflicting with background scraping +- Fix blocked reboot/shutdown when scraping in background (save gamelists also) + ## Version 9.2.2-Pulstar diff --git a/board/recalbox/fsoverlay/etc/udev/rules.d/90-rpi-add-serial.rules b/board/recalbox/fsoverlay/etc/udev/rules.d/90-rpi-add-serial.rules deleted file mode 100644 index f20eaac7266b7c3749299feb83a0ba3ac1e7a462..0000000000000000000000000000000000000000 --- a/board/recalbox/fsoverlay/etc/udev/rules.d/90-rpi-add-serial.rules +++ /dev/null @@ -1,21 +0,0 @@ -KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial0) ]; then \ - echo 0;\ - elif [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial1) ]; then \ - echo 1; \ - else \ - exit 1; \ - fi\ - '", SYMLINK+="serial%c" - -KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial0) ]; then \ - echo 0; \ - elif [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial1) ]; then \ - echo 1; \ - else \ - exit 1; \ - fi \ -'", SYMLINK+="serial%c" diff --git a/board/recalbox/kernel_patches/6.6/i2c-read-timeout-set-to-50ms.patch b/board/recalbox/kernel_patches/6.6/i2c-read-timeout-set-to-50ms.patch new file mode 100644 index 0000000000000000000000000000000000000000..5eea1311ca8080851fdf44c74e6ac784cbe5164c --- /dev/null +++ b/board/recalbox/kernel_patches/6.6/i2c-read-timeout-set-to-50ms.patch @@ -0,0 +1,27 @@ +diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c +index 7408e2c136b0..aa46ddfcfaa7 100644 +--- a/drivers/i2c/busses/i2c-bcm2835.c ++++ b/drivers/i2c/busses/i2c-bcm2835.c +@@ -525,6 +525,7 @@ static int bcm2835_i2c_probe(struct platform_device *pdev) + struct i2c_adapter *adap; + struct clk *mclk; + u32 bus_clk_rate; ++ u32 read_timeout; + + i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); + if (!i2c_dev) +@@ -594,6 +595,14 @@ static int bcm2835_i2c_probe(struct platform_device *pdev) + adap->dev.of_node = pdev->dev.of_node; + adap->quirks = of_device_get_match_data(&pdev->dev); + ++ ++ ret = of_property_read_u32(pdev->dev.of_node, "read-timeout-ms", ++ &read_timeout); ++ if (ret >= 0) { ++ dev_info(&pdev->dev, ++ "Setting i2c read timeout to %u ms\n", read_timeout); ++ adap->timeout = msecs_to_jiffies(read_timeout); ++ } + /* + * Disable the hardware clock stretching timeout. SMBUS + * specifies a limit for how long the device can stretch the diff --git a/board/recalbox/kernel_patches/6.6/linux-wiimote-abs-not-hat.patch b/board/recalbox/kernel_patches/6.6/linux-wiimote-abs-not-hat.patch new file mode 100644 index 0000000000000000000000000000000000000000..587f2a1d0646a523905b9a94c392eba9e1fecc86 --- /dev/null +++ b/board/recalbox/kernel_patches/6.6/linux-wiimote-abs-not-hat.patch @@ -0,0 +1,53 @@ +diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c +index 4390eee..76ed60b 100644 +--- a/drivers/hid/hid-wiimote-modules.c ++++ b/drivers/hid/hid-wiimote-modules.c +@@ -1126,12 +1126,12 @@ + rt <<= 1; + lt <<= 1; + +- input_report_abs(wdata->extension.input, ABS_HAT1X, lx); +- input_report_abs(wdata->extension.input, ABS_HAT1Y, ly); +- input_report_abs(wdata->extension.input, ABS_HAT2X, rx - 0x20); +- input_report_abs(wdata->extension.input, ABS_HAT2Y, ry - 0x20); +- input_report_abs(wdata->extension.input, ABS_HAT3X, rt); +- input_report_abs(wdata->extension.input, ABS_HAT3Y, lt); ++ input_report_abs(wdata->extension.input, ABS_HAT0X, lx); ++ input_report_abs(wdata->extension.input, ABS_HAT0Y, ly); ++ input_report_abs(wdata->extension.input, ABS_HAT1X, rx - 0x20); ++ input_report_abs(wdata->extension.input, ABS_HAT1Y, ry - 0x20); ++ input_report_abs(wdata->extension.input, ABS_HAT2X, rt); ++ input_report_abs(wdata->extension.input, ABS_HAT2Y, lt); + + input_report_key(wdata->extension.input, + wiimod_classic_map[WIIMOD_CLASSIC_KEY_LT], +@@ -1228,12 +1228,16 @@ static int wiimod_classic_probe(const struct wiimod_ops *ops, + wdata->extension.input->keybit); + + set_bit(EV_ABS, wdata->extension.input->evbit); ++ set_bit(ABS_HAT0X, wdata->extension.input->absbit); ++ set_bit(ABS_HAT0Y, wdata->extension.input->absbit); + set_bit(ABS_HAT1X, wdata->extension.input->absbit); + set_bit(ABS_HAT1Y, wdata->extension.input->absbit); + set_bit(ABS_HAT2X, wdata->extension.input->absbit); + set_bit(ABS_HAT2Y, wdata->extension.input->absbit); +- set_bit(ABS_HAT3X, wdata->extension.input->absbit); +- set_bit(ABS_HAT3Y, wdata->extension.input->absbit); ++ input_set_abs_params(wdata->extension.input, ++ ABS_HAT0X, -30, 30, 1, 1); ++ input_set_abs_params(wdata->extension.input, ++ ABS_HAT0Y, -30, 30, 1, 1); + input_set_abs_params(wdata->extension.input, + ABS_HAT1X, -30, 30, 1, 1); + input_set_abs_params(wdata->extension.input, +@@ -1242,10 +1246,6 @@ static int wiimod_classic_probe(const struct wiimod_ops *ops, + ABS_HAT2X, -30, 30, 1, 1); + input_set_abs_params(wdata->extension.input, + ABS_HAT2Y, -30, 30, 1, 1); +- input_set_abs_params(wdata->extension.input, +- ABS_HAT3X, -30, 30, 1, 1); +- input_set_abs_params(wdata->extension.input, +- ABS_HAT3Y, -30, 30, 1, 1); + + ret = input_register_device(wdata->extension.input); + if (ret) diff --git a/board/recalbox/kernel_patches/6.6/usbhid-max-quirks.patch b/board/recalbox/kernel_patches/6.6/usbhid-max-quirks.patch new file mode 100644 index 0000000000000000000000000000000000000000..6ea08d3ffe1a840a727fd9098977ca290121d129 --- /dev/null +++ b/board/recalbox/kernel_patches/6.6/usbhid-max-quirks.patch @@ -0,0 +1,13 @@ +diff --git a/include/linux/hid.h b/include/linux/hid.h +index 251a1d3..e15f38f 100644 +--- a/include/linux/hid.h ++++ b/include/linux/hid.h +@@ -305,7 +305,7 @@ struct hid_item { + /* + * Increase this if you need to configure more HID quirks at module load time + */ +-#define MAX_USBHID_BOOT_QUIRKS 4 ++#define MAX_USBHID_BOOT_QUIRKS 40 + + #define HID_QUIRK_INVERT 0x00000001 + #define HID_QUIRK_NOTOUCH 0x00000002 diff --git a/board/recalbox/odroidgo2/patches/sdl2/0001-sdl2-odroid-go-advance.patch b/board/recalbox/odroidgo2/patches/sdl2/0001-sdl2-odroid-go-advance.patch index 1fd301f17a8dd4e39ae0c17730a61ec5c8f45f99..a9724617546c04f5268928ebb1aead685ba66763 100644 --- a/board/recalbox/odroidgo2/patches/sdl2/0001-sdl2-odroid-go-advance.patch +++ b/board/recalbox/odroidgo2/patches/sdl2/0001-sdl2-odroid-go-advance.patch @@ -1,7 +1,7 @@ -From d7dcbea09cb39213683d1ff88b8009e9cc4970c3 Mon Sep 17 00:00:00 2001 -From: David Barbion -Date: Wed, 27 Sep 2023 11:57:50 +0200 -Subject: [PATCH 1/2] sdl2 odroid go advance +From bc9915675460f97f9fbc9589f27c6e0587eabb37 Mon Sep 17 00:00:00 2001 +From: digitalLumberjack +Date: Mon, 9 Sep 2024 15:05:54 +0200 +Subject: [PATCH] sdl2 odroid go advance --- CMakeLists.txt | 2 +- @@ -13,10 +13,10 @@ Subject: [PATCH 1/2] sdl2 odroid go advance 6 files changed, 140 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index c5c9a77db..633318879 100644 +index 7e135490a..99a6a8053 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -690,7 +690,7 @@ if(USE_GCC OR USE_CLANG) +@@ -711,7 +711,7 @@ if(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QCC) check_c_compiler_flag("" HAVE_NO_UNDEFINED) set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS}) if(HAVE_NO_UNDEFINED AND NOT (USE_CLANG AND WINDOWS)) @@ -26,7 +26,7 @@ index c5c9a77db..633318879 100644 endif() diff --git a/Makefile.in b/Makefile.in -index d4eeee402..88f5f4f57 100644 +index 27e0bbbf3..6f75dedbc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,7 +23,7 @@ CXX = @CXX@ @@ -39,10 +39,10 @@ index d4eeee402..88f5f4f57 100644 LIBTOOL = @LIBTOOL@ INSTALL = @INSTALL@ diff --git a/src/video/kmsdrm/SDL_kmsdrmopengles.c b/src/video/kmsdrm/SDL_kmsdrmopengles.c -index 969df3e18..626e420c9 100644 +index cbf86c949..90ca246c1 100644 --- a/src/video/kmsdrm/SDL_kmsdrmopengles.c +++ b/src/video/kmsdrm/SDL_kmsdrmopengles.c -@@ -29,11 +29,16 @@ +@@ -30,11 +30,16 @@ #include "SDL_kmsdrmopengles.h" #include "SDL_kmsdrmdyn.h" #include @@ -58,8 +58,8 @@ index 969df3e18..626e420c9 100644 + /* EGL implementation of SDL OpenGL support */ - void -@@ -92,6 +97,7 @@ KMSDRM_GLES_SwapWindow(_THIS, SDL_Window * window) { + void KMSDRM_GLES_DefaultProfileConfig(_THIS, int *mask, int *major, int *minor) +@@ -93,6 +98,7 @@ int KMSDRM_GLES_SwapWindow(_THIS, SDL_Window *window) SDL_VideoData *viddata = ((SDL_VideoData *)_this->driverdata); KMSDRM_FBInfo *fb_info; int ret = 0; @@ -67,7 +67,7 @@ index 969df3e18..626e420c9 100644 /* Always wait for the previous issued flip before issuing a new one, even if you do async flips. */ -@@ -135,7 +141,30 @@ KMSDRM_GLES_SwapWindow(_THIS, SDL_Window * window) { +@@ -143,7 +149,30 @@ int KMSDRM_GLES_SwapWindow(_THIS, SDL_Window *window) } /* Get an actual usable fb for the next front buffer. */ @@ -100,20 +100,20 @@ index 969df3e18..626e420c9 100644 SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "Could not get a framebuffer"); return 0; diff --git a/src/video/kmsdrm/SDL_kmsdrmsym.h b/src/video/kmsdrm/SDL_kmsdrmsym.h -index 8b9e7b257..b33373805 100644 +index 7a99e1b6a..a6f1d1e53 100644 --- a/src/video/kmsdrm/SDL_kmsdrmsym.h +++ b/src/video/kmsdrm/SDL_kmsdrmsym.h -@@ -122,7 +122,7 @@ SDL_KMSDRM_SYM(struct gbm_surface *,gbm_surface_create,(struct gbm_device *gbm, +@@ -128,7 +128,7 @@ SDL_KMSDRM_SYM(struct gbm_surface *,gbm_surface_create,(struct gbm_device *gbm, SDL_KMSDRM_SYM(void,gbm_surface_destroy,(struct gbm_surface *surf)) SDL_KMSDRM_SYM(struct gbm_bo *,gbm_surface_lock_front_buffer,(struct gbm_surface *surf)) SDL_KMSDRM_SYM(void,gbm_surface_release_buffer,(struct gbm_surface *surf, struct gbm_bo *bo)) - +SDL_KMSDRM_SYM(int,gbm_bo_get_fd,(struct gbm_bo *bo)) - - #undef SDL_KMSDRM_MODULE - #undef SDL_KMSDRM_SYM + SDL_KMSDRM_SYM(uint64_t,gbm_bo_get_modifier,(struct gbm_bo *bo)) + SDL_KMSDRM_SYM(int,gbm_bo_get_plane_count,(struct gbm_bo *bo)) + SDL_KMSDRM_SYM(uint32_t,gbm_bo_get_offset,(struct gbm_bo *bo, int plane)) diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c -index 83cdbf0aa..51613dee7 100644 +index b7abb4fc7..defa7fe7e 100644 --- a/src/video/kmsdrm/SDL_kmsdrmvideo.c +++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c @@ -44,6 +44,7 @@ @@ -140,12 +140,12 @@ index 83cdbf0aa..51613dee7 100644 +rga_info_t dst_info = {0}; +bool odroidgo_rotate = false; + - static int - get_driindex(void) + static int get_driindex(void) { -@@ -79,6 +85,11 @@ get_driindex(void) - DIR *folder; + int available = -ENOENT; +@@ -79,6 +85,11 @@ static int get_driindex(void) const char *hint; + struct dirent *res; + if (SDL_getenv("SDL_ODROIDGO_ROTATE") != NULL) { + SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, @@ -155,7 +155,7 @@ index 83cdbf0aa..51613dee7 100644 hint = SDL_GetHint(SDL_HINT_KMSDRM_DEVICE_INDEX); if (hint && *hint) { char *endptr = NULL; -@@ -334,6 +345,46 @@ KMSDRM_FBDestroyCallback(struct gbm_bo *bo, void *data) +@@ -332,6 +343,46 @@ static void KMSDRM_FBDestroyCallback(struct gbm_bo *bo, void *data) SDL_free(fb_info); } @@ -199,10 +199,10 @@ index 83cdbf0aa..51613dee7 100644 + rga_set_rect(&dst_info.rect, 0, 0, frameWidth, frameHeight, frameWidth, frameHeight, RK_FORMAT_BGRA_8888); +} + - KMSDRM_FBInfo * - KMSDRM_FBFromBO(_THIS, struct gbm_bo *bo) + KMSDRM_FBInfo *KMSDRM_FBFromBO(_THIS, struct gbm_bo *bo) { -@@ -851,8 +902,13 @@ KMSDRM_AddDisplay (_THIS, drmModeConnector *connector, drmModeRes *resources) + SDL_VideoData *viddata = ((SDL_VideoData *)_this->driverdata); +@@ -871,8 +922,13 @@ static void KMSDRM_AddDisplay(_THIS, drmModeConnector *connector, drmModeRes *re modedata->mode_index = mode_index; display.driverdata = dispdata; @@ -218,7 +218,7 @@ index 83cdbf0aa..51613dee7 100644 display.desktop_mode.refresh_rate = dispdata->mode.vrefresh; display.desktop_mode.format = SDL_PIXELFORMAT_ARGB8888; display.desktop_mode.driverdata = modedata; -@@ -1129,7 +1185,11 @@ KMSDRM_DirtySurfaces(SDL_Window *window) { +@@ -1147,7 +1203,11 @@ static void KMSDRM_DirtySurfaces(SDL_Window *window) or SetWindowFullscreen, send a fake event for now since the actual recreation is deferred */ KMSDRM_GetModeToSet(window, &mode); @@ -231,7 +231,7 @@ index 83cdbf0aa..51613dee7 100644 } /* This determines the size of the fb, which comes from the GBM surface -@@ -1165,14 +1225,22 @@ KMSDRM_CreateSurfaces(_THIS, SDL_Window * window) +@@ -1182,14 +1242,22 @@ int KMSDRM_CreateSurfaces(_THIS, SDL_Window *window) mode that's set in sync with what SDL_video.c thinks is set */ KMSDRM_GetModeToSet(window, &dispdata->mode); @@ -251,13 +251,13 @@ index 83cdbf0aa..51613dee7 100644 + display->current_mode.w = dispdata->mode.hdisplay; + display->current_mode.h = dispdata->mode.vdisplay; + windata->gs = KMSDRM_gbm_surface_create(viddata->gbm_dev, - dispdata->mode.hdisplay, dispdata->mode.vdisplay, - surface_fmt, surface_flags); + dispdata->mode.hdisplay, dispdata->mode.vdisplay, + surface_fmt, surface_flags); + } if (!windata->gs) { return SDL_SetError("Could not create GBM surface"); -@@ -1194,7 +1262,11 @@ KMSDRM_CreateSurfaces(_THIS, SDL_Window * window) +@@ -1211,7 +1279,11 @@ int KMSDRM_CreateSurfaces(_THIS, SDL_Window *window) egl_context = (EGLContext)SDL_GL_GetCurrentContext(); ret = SDL_EGL_MakeCurrent(_this, windata->egl_surface, egl_context); @@ -270,7 +270,7 @@ index 83cdbf0aa..51613dee7 100644 dispdata->mode.hdisplay, dispdata->mode.vdisplay); windata->egl_surface_dirty = SDL_FALSE; -@@ -1280,9 +1352,13 @@ KMSDRM_GetDisplayModes(_THIS, SDL_VideoDisplay * display) +@@ -1328,9 +1400,13 @@ void KMSDRM_GetDisplayModes(_THIS, SDL_VideoDisplay *display) if (modedata) { modedata->mode_index = i; } @@ -287,7 +287,7 @@ index 83cdbf0aa..51613dee7 100644 mode.refresh_rate = conn->modes[i].vrefresh; mode.format = SDL_PIXELFORMAT_ARGB8888; mode.driverdata = modedata; -@@ -1397,6 +1473,13 @@ KMSDRM_DestroyWindow(_THIS, SDL_Window *window) +@@ -1443,6 +1519,13 @@ void KMSDRM_DestroyWindow(_THIS, SDL_Window *window) /*********************************************************************/ SDL_free(window->driverdata); window->driverdata = NULL; @@ -301,7 +301,7 @@ index 83cdbf0aa..51613dee7 100644 } /**********************************************************************/ -@@ -1416,6 +1499,7 @@ KMSDRM_CreateWindow(_THIS, SDL_Window * window) +@@ -1461,6 +1544,7 @@ int KMSDRM_CreateWindow(_THIS, SDL_Window *window) NativeDisplayType egl_display; drmModeModeInfo *mode; int ret = 0; @@ -309,7 +309,7 @@ index 83cdbf0aa..51613dee7 100644 /* Allocate window internal data */ windata = (SDL_WindowData *)SDL_calloc(1, sizeof(SDL_WindowData)); -@@ -1529,7 +1613,11 @@ KMSDRM_CreateWindow(_THIS, SDL_Window * window) +@@ -1581,7 +1665,11 @@ int KMSDRM_CreateWindow(_THIS, SDL_Window *window) SDL_SetMouseFocus() also takes care of calling KMSDRM_ShowCursor() if necessary. */ SDL_SetMouseFocus(window); SDL_SetKeyboardFocus(window); @@ -320,10 +320,10 @@ index 83cdbf0aa..51613dee7 100644 + } + /* Tell the app that the window has moved to top-left. */ - SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, 0, 0); - + { + SDL_Rect display_bounds; diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.h b/src/video/kmsdrm/SDL_kmsdrmvideo.h -index ae004d019..ccfa0d1d5 100644 +index 1fe77f697..9a1750fbc 100644 --- a/src/video/kmsdrm/SDL_kmsdrmvideo.h +++ b/src/video/kmsdrm/SDL_kmsdrmvideo.h @@ -32,6 +32,10 @@ @@ -335,9 +335,9 @@ index ae004d019..ccfa0d1d5 100644 + +#define RGA_BUFFERS_MAX (3) - typedef struct SDL_VideoData - { -@@ -53,6 +57,10 @@ typedef struct SDL_VideoData + #ifndef DRM_FORMAT_MOD_INVALID + #define DRM_FORMAT_MOD_INVALID 0x00ffffffffffffffULL +@@ -92,6 +96,10 @@ typedef struct SDL_VideoData open 1 FD and create 1 gbm device. */ SDL_bool gbm_init; @@ -347,7 +347,7 @@ index ae004d019..ccfa0d1d5 100644 + } SDL_VideoData; - + typedef struct SDL_DisplayModeData -- -2.42.0 +2.43.0 diff --git a/board/recalbox/odroidgo2/patches/sdl2/0002-odroidgoa-kmsdrm-and-rotate-cursor.patch b/board/recalbox/odroidgo2/patches/sdl2/0002-odroidgoa-kmsdrm-and-rotate-cursor.patch index 863da2950060df85fd2207a320c447e2fd688f8d..9f8c9bdf102e2eff9f2d3589daa16876eadcf219 100644 --- a/board/recalbox/odroidgo2/patches/sdl2/0002-odroidgoa-kmsdrm-and-rotate-cursor.patch +++ b/board/recalbox/odroidgo2/patches/sdl2/0002-odroidgoa-kmsdrm-and-rotate-cursor.patch @@ -1,25 +1,25 @@ -From e39c175af161607cbfd027fdff869f9564076f90 Mon Sep 17 00:00:00 2001 -From: David Barbion -Date: Sat, 30 Sep 2023 00:12:46 +0200 -Subject: [PATCH 2/2] odroidgoa kmsdrm and rotate cursor +From f25928f13bd23fa4383180a72df93f4dd74f4b2c Mon Sep 17 00:00:00 2001 +From: digitalLumberjack +Date: Mon, 9 Sep 2024 15:20:45 +0200 +Subject: [PATCH] odroidgoa kmsdrm and rotate cursor --- src/video/kmsdrm/SDL_kmsdrmmouse.c | 39 ++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/video/kmsdrm/SDL_kmsdrmmouse.c b/src/video/kmsdrm/SDL_kmsdrmmouse.c -index 99b869939..6bdbc8be8 100644 +index ec01004ef..59ec6ac99 100644 --- a/src/video/kmsdrm/SDL_kmsdrmmouse.c +++ b/src/video/kmsdrm/SDL_kmsdrmmouse.c -@@ -39,6 +39,7 @@ static void KMSDRM_MoveCursor(SDL_Cursor * cursor); - static void KMSDRM_FreeCursor(SDL_Cursor * cursor); - static void KMSDRM_WarpMouse(SDL_Window * window, int x, int y); +@@ -39,6 +39,7 @@ static void KMSDRM_MoveCursor(SDL_Cursor *cursor); + static void KMSDRM_FreeCursor(SDL_Cursor *cursor); + static void KMSDRM_WarpMouse(SDL_Window *window, int x, int y); static int KMSDRM_WarpMouseGlobal(int x, int y); +extern bool odroidgo_rotate; /**************************************************************************************/ /* BEFORE CODING ANYTHING MOUSE/CURSOR RELATED, REMEMBER THIS. */ -@@ -156,6 +157,7 @@ KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) +@@ -150,6 +151,7 @@ static int KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) uint8_t *src_row; int i; @@ -27,12 +27,12 @@ index 99b869939..6bdbc8be8 100644 int ret; if (!curdata || !dispdata->cursor_bo) { -@@ -176,8 +178,15 @@ KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) +@@ -170,8 +172,15 @@ static int KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) /* Copy from the cursor buffer to a buffer that we can dump to the GBM BO. */ for (i = 0; i < curdata->h; i++) { -- src_row = &((uint8_t*)curdata->buffer)[i * curdata->w * 4]; -- SDL_memcpy(ready_buffer + (i * bo_stride), src_row, 4 * curdata->w); +- src_row = &((uint8_t *)curdata->buffer)[i * curdata->w * 4]; +- SDL_memcpy(ready_buffer + (i * bo_stride), src_row, (size_t)4 * curdata->w); + if (odroidgo_rotate) { + for (j = 0; j < curdata->w; j++) { + src_row = ((uint32_t*)curdata->buffer)[i * curdata->w + j]; @@ -45,7 +45,7 @@ index 99b869939..6bdbc8be8 100644 } /* Dump the cursor buffer to our GBM BO. */ -@@ -189,10 +198,18 @@ KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) +@@ -183,10 +192,18 @@ static int KMSDRM_DumpCursorToBO(SDL_VideoDisplay *display, SDL_Cursor *cursor) /* Put the GBM BO buffer on screen using the DRM interface. */ bo_handle = KMSDRM_gbm_bo_get_handle(dispdata->cursor_bo).u32; if (curdata->hot_x == 0 && curdata->hot_y == 0) { @@ -55,7 +55,7 @@ index 99b869939..6bdbc8be8 100644 + bo_handle, dispdata->cursor_h, dispdata->cursor_w); + else + ret = KMSDRM_drmModeSetCursor(viddata->drm_fd, dispdata->crtc->crtc_id, - bo_handle, dispdata->cursor_w, dispdata->cursor_h); + bo_handle, dispdata->cursor_w, dispdata->cursor_h); } else { - ret = KMSDRM_drmModeSetCursor2(viddata->drm_fd, dispdata->crtc->crtc_id, + if (odroidgo_rotate) @@ -63,21 +63,21 @@ index 99b869939..6bdbc8be8 100644 + bo_handle, dispdata->cursor_h, dispdata->cursor_w, curdata->hot_y, (curdata->w - curdata->hot_x + 1)); + else + ret = KMSDRM_drmModeSetCursor2(viddata->drm_fd, dispdata->crtc->crtc_id, - bo_handle, dispdata->cursor_w, dispdata->cursor_h, curdata->hot_x, curdata->hot_y); + bo_handle, dispdata->cursor_w, dispdata->cursor_h, curdata->hot_x, curdata->hot_y); } -@@ -378,9 +395,9 @@ KMSDRM_WarpMouseGlobal(int x, int y) +@@ -367,9 +384,9 @@ static int KMSDRM_WarpMouseGlobal(int x, int y) SDL_Mouse *mouse = SDL_GetMouse(); if (mouse && mouse->cur_cursor && mouse->focus) { - SDL_Window *window = mouse->focus; - SDL_DisplayData *dispdata = (SDL_DisplayData *) SDL_GetDisplayForWindow(window)->driverdata; + SDL_DisplayData *dispdata = (SDL_DisplayData *)SDL_GetDisplayForWindow(window)->driverdata; + KMSDRM_CursorData *curdata = mouse->cur_cursor->driverdata; /* Update internal mouse position. */ SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 0, x, y); -@@ -389,7 +406,10 @@ KMSDRM_WarpMouseGlobal(int x, int y) +@@ -378,7 +395,10 @@ static int KMSDRM_WarpMouseGlobal(int x, int y) if (dispdata->cursor_bo) { int ret = 0; @@ -89,13 +89,13 @@ index 99b869939..6bdbc8be8 100644 if (ret) { SDL_SetError("drmModeMoveCursor() failed."); -@@ -443,16 +463,19 @@ KMSDRM_MoveCursor(SDL_Cursor * cursor) +@@ -429,16 +449,19 @@ static void KMSDRM_MoveCursor(SDL_Cursor *cursor) /* We must NOT call SDL_SendMouseMotion() here or we will enter recursivity! That's why we move the cursor graphic ONLY. */ if (mouse && mouse->cur_cursor && mouse->focus) { - SDL_Window *window = mouse->focus; - SDL_DisplayData *dispdata = (SDL_DisplayData *) SDL_GetDisplayForWindow(window)->driverdata; + SDL_DisplayData *dispdata = (SDL_DisplayData *)SDL_GetDisplayForWindow(window)->driverdata; + KMSDRM_CursorData *curdata = mouse->cur_cursor->driverdata; if (!dispdata->cursor_bo) { @@ -112,5 +112,5 @@ index 99b869939..6bdbc8be8 100644 if (ret) { SDL_SetError("drmModeMoveCursor() failed."); -- -2.42.0 +2.43.0 diff --git a/board/recalbox/odroidgo2/patches/sdl2/0005-sdl2-libmali-patch.patch b/board/recalbox/odroidgo2/patches/sdl2/0005-sdl2-libmali-patch.patch index 7ac7857554d8f5c7efc6b841d6dd3c1c76af39d0..3b3c49f74362c7baded1f831c70f61e1edc0a899 100644 --- a/board/recalbox/odroidgo2/patches/sdl2/0005-sdl2-libmali-patch.patch +++ b/board/recalbox/odroidgo2/patches/sdl2/0005-sdl2-libmali-patch.patch @@ -1,7 +1,7 @@ -From 241efc729eeedfe48762c95b9221eea0eaa23349 Mon Sep 17 00:00:00 2001 -From: David Barbion -Date: Sun, 16 Jan 2022 12:40:23 +0100 -Subject: [PATCH 5/5] sdl2 libmali patch +From d3f4255fba349584e6dfcb8da407541eb2426ba7 Mon Sep 17 00:00:00 2001 +From: digitalLumberjack +Date: Mon, 9 Sep 2024 15:28:29 +0200 +Subject: [PATCH] sdl2 libmali patch --- src/video/SDL_egl.c | 2 +- @@ -9,10 +9,10 @@ Subject: [PATCH 5/5] sdl2 libmali patch 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c -index e10cf7c70..f7cf2751a 100644 +index a89c0e812..c35791ce3 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c -@@ -1041,7 +1041,7 @@ SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface) +@@ -1044,7 +1044,7 @@ SDL_GLContext SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface) return NULL; } @@ -20,16 +20,16 @@ index e10cf7c70..f7cf2751a 100644 + _this->egl_data->egl_swapinterval = 1; if (SDL_EGL_MakeCurrent(_this, egl_surface, egl_context) < 0) { - /* Save the SDL error set by SDL_EGL_MakeCurrent */ + /* Delete the context */ diff --git a/src/video/kmsdrm/SDL_kmsdrmopengles.c b/src/video/kmsdrm/SDL_kmsdrmopengles.c -index ca3556385..150227575 100644 +index 90ca246c1..fc8e6ccd8 100644 --- a/src/video/kmsdrm/SDL_kmsdrmopengles.c +++ b/src/video/kmsdrm/SDL_kmsdrmopengles.c -@@ -44,11 +44,17 @@ KMSDRM_GLES_DefaultProfileConfig(_THIS, int *mask, int *major, int *minor) +@@ -46,11 +46,17 @@ void KMSDRM_GLES_DefaultProfileConfig(_THIS, int *mask, int *major, int *minor) { /* if SDL was _also_ built with the Raspberry Pi driver (so we're definitely a Pi device), default to GLES2. */ --#if SDL_VIDEO_DRIVER_RPI +-#ifdef SDL_VIDEO_DRIVER_RPI - *mask = SDL_GL_CONTEXT_PROFILE_ES; - *major = 2; - *minor = 0; @@ -46,15 +46,15 @@ index ca3556385..150227575 100644 + } } - int -@@ -75,6 +81,7 @@ SDL_EGL_CreateContext_impl(KMSDRM) - - int KMSDRM_GLES_SetSwapInterval(_THIS, int interval) { + int KMSDRM_GLES_LoadLibrary(_THIS, const char *path) +@@ -78,6 +84,7 @@ SDL_EGL_CreateContext_impl(KMSDRM) + int KMSDRM_GLES_SetSwapInterval(_THIS, int interval) + { + interval = 1; if (!_this->egl_data) { return SDL_SetError("EGL not initialized"); } -- -2.34.1 +2.43.0 diff --git a/board/recalbox/patches/sdl2/sdl2_input_p003_extra_functions.patch b/board/recalbox/patches/sdl2/sdl2_input_p003_extra_functions.patch index 4bb7789fd7938f3d5169953268f04bb90259a45f..fd825fe96037dad1414aad7dfb94e99578b8f764 100644 --- a/board/recalbox/patches/sdl2/sdl2_input_p003_extra_functions.patch +++ b/board/recalbox/patches/sdl2/sdl2_input_p003_extra_functions.patch @@ -1,23 +1,8 @@ -From e5bdef40d2b42b40e0d8f02f82b6f9731e3b2d18 Mon Sep 17 00:00:00 2001 -From: David Barbion -Date: Wed, 8 Mar 2023 23:02:52 +0100 -Subject: [PATCH] sdl2 input p003 extra functions - ---- - include/SDL_joystick.h | 5 +++ - src/dynapi/SDL_dynapi_overrides.h | 6 +++ - src/dynapi/SDL_dynapi_procs.h | 6 +++ - src/joystick/SDL_joystick.c | 21 +++++++++ - src/joystick/SDL_sysjoystick.h | 5 +++ - src/joystick/linux/SDL_sysjoystick.c | 60 ++++++++++++++++++++++++++ - src/joystick/linux/SDL_sysjoystick_c.h | 1 + - 7 files changed, 104 insertions(+) - diff --git a/include/SDL_joystick.h b/include/SDL_joystick.h -index 07d6a2e0a..01aa9cbf5 100644 +index 7a3faf8..dbcb732 100644 --- a/include/SDL_joystick.h +++ b/include/SDL_joystick.h -@@ -421,6 +421,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); +@@ -424,6 +424,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); */ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); @@ -30,7 +15,7 @@ index 07d6a2e0a..01aa9cbf5 100644 * Set values on an opened, virtual-joystick's axis. * diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h -index 52ddfafef..2103e4066 100644 +index f57c522..5131707 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -209,6 +209,12 @@ @@ -47,7 +32,7 @@ index 52ddfafef..2103e4066 100644 #define SDL_JoystickGetBall SDL_JoystickGetBall_REAL #define SDL_JoystickGetButton SDL_JoystickGetButton_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h -index 2180dbfb1..7dfb9fd85 100644 +index 7f5d325..d3d9399 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -243,6 +243,12 @@ SDL_DYNAPI_PROC(int,SDL_JoystickNumButtons,(SDL_Joystick *a),(a),return) @@ -64,10 +49,10 @@ index 2180dbfb1..7dfb9fd85 100644 SDL_DYNAPI_PROC(int,SDL_JoystickGetBall,(SDL_Joystick *a, int b, int *c, int *d),(a,b,c,d),return) SDL_DYNAPI_PROC(Uint8,SDL_JoystickGetButton,(SDL_Joystick *a, int b),(a,b),return) diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c -index b4d6d2edc..95c09ebea 100644 +index dff447b..c90a0fc 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c -@@ -2898,6 +2898,27 @@ SDL_JoystickGUID SDL_JoystickGetGUIDFromString(const char *pchGUID) +@@ -3241,6 +3241,27 @@ SDL_JoystickGUID SDL_JoystickGetGUIDFromString(const char *pchGUID) return SDL_GUIDFromString(pchGUID); } @@ -96,10 +81,10 @@ index b4d6d2edc..95c09ebea 100644 void SDL_PrivateJoystickBatteryLevel(SDL_Joystick *joystick, SDL_JoystickPowerLevel ePowerLevel) { diff --git a/src/joystick/SDL_sysjoystick.h b/src/joystick/SDL_sysjoystick.h -index 20216bb49..5e40d5e42 100644 +index 173650e..a25a14c 100644 --- a/src/joystick/SDL_sysjoystick.h +++ b/src/joystick/SDL_sysjoystick.h -@@ -250,6 +250,11 @@ extern SDL_JoystickDriver SDL_N3DS_JoystickDriver; +@@ -259,6 +259,11 @@ extern SDL_JoystickDriver SDL_N3DS_JoystickDriver; } #endif @@ -112,12 +97,12 @@ index 20216bb49..5e40d5e42 100644 /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c -index dc534ba6c..86a83d465 100644 +index bb7c31c..379a9b5 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c -@@ -957,6 +957,16 @@ ConfigJoystick(SDL_Joystick *joystick, int fd) - SDL_bool use_deadzones = SDL_GetHintBoolean(SDL_HINT_LINUX_JOYSTICK_DEADZONES, SDL_FALSE); - SDL_bool use_hat_deadzones = SDL_GetHintBoolean(SDL_HINT_LINUX_HAT_DEADZONES, SDL_TRUE); +@@ -1270,6 +1270,16 @@ static void ConfigJoystick(SDL_Joystick *joystick, int fd, int fd_sensor) + + SDL_AssertJoysticksLocked(); + for(i=0; ihwdata->key_map[i] = -1; @@ -132,7 +117,7 @@ index dc534ba6c..86a83d465 100644 /* See if this device uses the new unified event API */ if ((ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(keybit)), keybit) >= 0) && (ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(absbit)), absbit) >= 0) && -@@ -2090,6 +2100,56 @@ SDL_JoystickDriver SDL_LINUX_JoystickDriver = +@@ -2809,6 +2819,56 @@ SDL_JoystickDriver SDL_LINUX_JoystickDriver = { LINUX_JoystickGetGamepadMapping }; @@ -190,17 +175,14 @@ index dc534ba6c..86a83d465 100644 /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/linux/SDL_sysjoystick_c.h b/src/joystick/linux/SDL_sysjoystick_c.h -index 79e7ab443..2d971ed60 100644 +index 6d6ee69..43f5e07 100644 --- a/src/joystick/linux/SDL_sysjoystick_c.h +++ b/src/joystick/linux/SDL_sysjoystick_c.h -@@ -53,6 +53,7 @@ struct joystick_hwdata +@@ -57,6 +57,7 @@ struct joystick_hwdata /* Support for the Linux 2.4 unified input interface */ Uint8 key_map[KEY_MAX]; Uint8 abs_map[ABS_MAX]; + Uint8 hat_map[ABS_MAX]; SDL_bool has_key[KEY_MAX]; SDL_bool has_abs[ABS_MAX]; - --- -2.39.2 - + SDL_bool has_accelerometer; diff --git a/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config b/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config similarity index 100% rename from board/recalbox/rpi/kernel-6.1-defconfig-fragment.config rename to board/recalbox/rpi/kernel-6.6-defconfig-fragment.config diff --git a/board/recalbox/rpi/kernel_patches/6.6/0001-feat-add-piboy-dmg-panel-for-kms-driver.patch b/board/recalbox/rpi/kernel_patches/6.6/0001-feat-add-piboy-dmg-panel-for-kms-driver.patch new file mode 100644 index 0000000000000000000000000000000000000000..08f51ad02ea0d0cc4a5edda83a49d3bfc61c4927 --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0001-feat-add-piboy-dmg-panel-for-kms-driver.patch @@ -0,0 +1,130 @@ +From 6ddecf9eb83ca5685e68cecea6910b87060e6b7e Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Thu, 9 Dec 2021 22:48:17 +0100 +Subject: [PATCH 1/8] feat: add piboy dmg panel for kms driver + +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + .../overlays/vc4-kms-dpi-piboydmg-overlay.dts | 44 +++++++++++++++++++ + drivers/gpu/drm/panel/panel-simple.c | 35 +++++++++++++++ + 3 files changed, 80 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-piboydmg-overlay.dts + +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index bdd02b8c6f0f..84b38d631576 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -301,6 +301,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + vc4-kms-dpi-hyperpixel4.dtbo \ + vc4-kms-dpi-hyperpixel4sq.dtbo \ + vc4-kms-dpi-panel.dtbo \ ++ vc4-kms-dpi-piboydmg.dtbo \ + vc4-kms-dsi-7inch.dtbo \ + vc4-kms-dsi-generic.dtbo \ + vc4-kms-dsi-ili9881-5inch.dtbo \ +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-piboydmg-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-piboydmg-overlay.dts +new file mode 100644 +index 000000000000..a4e727dda7d7 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-piboydmg-overlay.dts +@@ -0,0 +1,44 @@ ++/* ++ * vc4-kms-dpi-piboydmg-overlay.dts ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++#include ++#include ++ ++/ { ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target-path = "/"; ++ __overlay__ { ++ panel: panel { ++ compatible = "xpi,piboydmg", "simple-panel"; ++ ++ port { ++ panel_in: endpoint { ++ remote-endpoint = <&dpi_out>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&dpi>; ++ __overlay__ { ++ status = "okay"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>; ++ ++ port { ++ dpi_out: endpoint { ++ remote-endpoint = <&panel_in>; ++ }; ++ }; ++ }; ++ }; ++}; +diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c +index 035ee7a2f8a0..db5fae3fde9a 100644 +--- a/drivers/gpu/drm/panel/panel-simple.c ++++ b/drivers/gpu/drm/panel/panel-simple.c +@@ -2228,6 +2228,38 @@ static const struct panel_desc innolux_at043tn24 = { + .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, + }; + ++static const struct display_timing xpi_piboydmg_timing = { ++ .pixelclock = { 32000000, 32000000, 32200000}, ++ .hactive = { 640, 640, 640 }, ++ .hfront_porch = { 130, 80, 30 }, ++ .hback_porch = { 130, 80, 30 }, ++ .hsync_len = { 130, 80, 30}, ++ .vactive = { 480, 480, 480 }, ++ .vfront_porch = { 13, 13, 13}, ++ .vback_porch = { 13, 13, 13 }, ++ .vsync_len = { 13, 13, 13 }, ++ .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_PHSYNC, ++}; ++ ++static const struct panel_desc xpi_piboydmg = { ++ .timings = &xpi_piboydmg_timing, ++ .num_timings = 1, ++ .bpc = 6, ++ .size = { ++ .width = 112, ++ .height = 84, ++ }, ++ .delay = { ++ .prepare = 50, ++ .enable = 200, ++ .disable = 110, ++ .unprepare = 200, ++ }, ++ .bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI, ++ .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE, ++ .connector_type = DRM_MODE_CONNECTOR_DPI, ++}; ++ + static const struct display_timing innolux_at056tn53v1_timing = { + .pixelclock = { 39700000, 39700000, 39700000}, + .hactive = { 640, 640, 640 }, +@@ -4366,6 +4398,9 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "innolux,at043tn24", + .data = &innolux_at043tn24, ++ }, { ++ .compatible = "xpi,piboydmg", ++ .data = &xpi_piboydmg, + }, { + .compatible = "innolux,at056tn53v1", + .data = &innolux_at056tn53v1, +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0002-feat-add-auo-a030vvn01-dpi-panel-for-kms-driver.patch b/board/recalbox/rpi/kernel_patches/6.6/0002-feat-add-auo-a030vvn01-dpi-panel-for-kms-driver.patch new file mode 100644 index 0000000000000000000000000000000000000000..ea302f37114b022af65a43a1ebdb12cc74143d10 --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0002-feat-add-auo-a030vvn01-dpi-panel-for-kms-driver.patch @@ -0,0 +1,124 @@ +From c22a1ed65525b51a68f9a8b81c729bf997d3005c Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Tue, 25 Jan 2022 23:05:52 +0100 +Subject: [PATCH 2/8] feat: add auo a030vvn01 dpi panel for kms driver + +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + .../vc4-kms-dpi-a030vvn01-0-overlay.dts | 44 +++++++++++++++++++ + drivers/gpu/drm/panel/panel-simple.c | 29 ++++++++++++ + 3 files changed, 74 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-a030vvn01-0-overlay.dts + +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index 84b38d631576..6975e3c89f62 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -302,6 +302,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + vc4-kms-dpi-hyperpixel4sq.dtbo \ + vc4-kms-dpi-panel.dtbo \ + vc4-kms-dpi-piboydmg.dtbo \ ++ vc4-kms-dpi-a030vvn01-0.dtbo \ + vc4-kms-dsi-7inch.dtbo \ + vc4-kms-dsi-generic.dtbo \ + vc4-kms-dsi-ili9881-5inch.dtbo \ +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-a030vvn01-0-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-a030vvn01-0-overlay.dts +new file mode 100644 +index 000000000000..677e21114e3b +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-a030vvn01-0-overlay.dts +@@ -0,0 +1,44 @@ ++/* ++ * vc4-kms-dpi-a030vvn01-1-overlay.dts ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++#include ++#include ++ ++/ { ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target-path = "/"; ++ __overlay__ { ++ panel: panel { ++ compatible = "auo,a030vvn01", "simple-panel"; ++ ++ port { ++ panel_in: endpoint { ++ remote-endpoint = <&dpi_out>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&dpi>; ++ __overlay__ { ++ status = "okay"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>; ++ ++ port { ++ dpi_out: endpoint { ++ remote-endpoint = <&panel_in>; ++ }; ++ }; ++ }; ++ }; ++}; +diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c +index db5fae3fde9a..9c9c86b0485e 100644 +--- a/drivers/gpu/drm/panel/panel-simple.c ++++ b/drivers/gpu/drm/panel/panel-simple.c +@@ -2260,6 +2260,32 @@ static const struct panel_desc xpi_piboydmg = { + .connector_type = DRM_MODE_CONNECTOR_DPI, + }; + ++static const struct display_timing auo_a030vvn01_timing = { ++ .pixelclock = { 19750000, 24000000, 28220000}, ++ .hactive = { 640, 640, 640 }, ++ .hfront_porch = { 20, 41, 50 }, ++ .hback_porch = { 19, 41, 50 }, ++ .hsync_len = { 1, 40, 50}, ++ .vactive = { 480, 480, 480 }, ++ .vfront_porch = { 1, 18, 30}, ++ .vback_porch = { 2, 18, 32 }, ++ .vsync_len = { 1, 9, 18 }, ++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, ++}; ++ ++static const struct panel_desc auo_a030vvn01 = { ++ .timings = &auo_a030vvn01_timing, ++ .num_timings = 1, ++ .bpc = 6, ++ .size = { ++ .width = 60, ++ .height = 45, ++ }, ++ .bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI, ++ .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE, ++ .connector_type = DRM_MODE_CONNECTOR_DPI, ++}; ++ + static const struct display_timing innolux_at056tn53v1_timing = { + .pixelclock = { 39700000, 39700000, 39700000}, + .hactive = { 640, 640, 640 }, +@@ -4401,6 +4427,9 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "xpi,piboydmg", + .data = &xpi_piboydmg, ++ }, { ++ .compatible = "auo,a030vvn01", ++ .data = &auo_a030vvn01, + }, { + .compatible = "innolux,at056tn53v1", + .data = &innolux_at056tn53v1, +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0003-linux-usb-hid-input-xinmo.patch b/board/recalbox/rpi/kernel_patches/6.6/0003-linux-usb-hid-input-xinmo.patch new file mode 100644 index 0000000000000000000000000000000000000000..b6fd735202d3a0689399254c493e7282b55b95f7 --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0003-linux-usb-hid-input-xinmo.patch @@ -0,0 +1,40 @@ +From 99d67e097a1e7855b1d255a86bba2e70bc4d9fa6 Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Fri, 18 Feb 2022 22:23:31 +0100 +Subject: [PATCH 3/8] linux usb hid input xinmo + +--- + drivers/hid/hid-input.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c +index c8b20d44b147..b28f50572bc7 100644 +--- a/drivers/hid/hid-input.c ++++ b/drivers/hid/hid-input.c +@@ -874,14 +874,6 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel + + switch (usage->hid) { + /* These usage IDs map directly to the usage codes. */ +- case HID_GD_X: case HID_GD_Y: case HID_GD_Z: +- case HID_GD_RX: case HID_GD_RY: case HID_GD_RZ: +- if (field->flags & HID_MAIN_ITEM_RELATIVE) +- map_rel(usage->hid & 0xf); +- else +- map_abs_clear(usage->hid & 0xf); +- break; +- + case HID_GD_WHEEL: + if (field->flags & HID_MAIN_ITEM_RELATIVE) { + set_bit(REL_WHEEL, input->relbit); +@@ -890,6 +882,8 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel + map_abs(usage->hid & 0xf); + } + break; ++ case HID_GD_X: case HID_GD_Y: case HID_GD_Z: ++ case HID_GD_RX: case HID_GD_RY: case HID_GD_RZ: + case HID_GD_SLIDER: case HID_GD_DIAL: + if (field->flags & HID_MAIN_ITEM_RELATIVE) + map_rel(usage->hid & 0xf); +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0004-linux-usb-xinmo20pins-support.patch b/board/recalbox/rpi/kernel_patches/6.6/0004-linux-usb-xinmo20pins-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..873cd9c740c259758f14d96843d0f2858d2c5d27 --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0004-linux-usb-xinmo20pins-support.patch @@ -0,0 +1,24 @@ +From aa501a43ae6312be0a934c2c7f4fe70adf8aa957 Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Fri, 18 Feb 2022 22:23:52 +0100 +Subject: [PATCH 4/8] linux usb xinmo20pins support + +--- + drivers/hid/hid-quirks.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c +index 1d1949d62dfa..346cf5df550e 100644 +--- a/drivers/hid/hid-quirks.c ++++ b/drivers/hid/hid-quirks.c +@@ -209,6 +209,7 @@ static const struct hid_device_id hid_quirks[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_THT_2P_ARCADE), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0005-linux-vc4-dpi-enable-interlace.patch b/board/recalbox/rpi/kernel_patches/6.6/0005-linux-vc4-dpi-enable-interlace.patch new file mode 100644 index 0000000000000000000000000000000000000000..42e45212f7fe7e62ce2b6c5828b0900ca6b4a8ad --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0005-linux-vc4-dpi-enable-interlace.patch @@ -0,0 +1,26 @@ +From 1b00276a429370c3d093f90e5f16dda93b8b58bf Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Fri, 18 Feb 2022 22:29:04 +0100 +Subject: [PATCH 5/8] linux vc4 dpi enable interlace + +--- + drivers/gpu/drm/vc4/vc4_dpi.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c +index 39152e755a13..ca58f74e8b51 100644 +--- a/drivers/gpu/drm/vc4/vc4_dpi.c ++++ b/drivers/gpu/drm/vc4/vc4_dpi.c +@@ -248,9 +248,6 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder) + static enum drm_mode_status vc4_dpi_encoder_mode_valid(struct drm_encoder *encoder, + const struct drm_display_mode *mode) + { +- if (mode->flags & DRM_MODE_FLAG_INTERLACE) +- return MODE_NO_INTERLACE; +- + return MODE_OK; + } + +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0006-linux-bcm-clk-add-roundup-ability-to-the-clock-divis.patch b/board/recalbox/rpi/kernel_patches/6.6/0006-linux-bcm-clk-add-roundup-ability-to-the-clock-divis.patch new file mode 100644 index 0000000000000000000000000000000000000000..c5821d0ab6e8104690f058999ab0ecb635c78872 --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0006-linux-bcm-clk-add-roundup-ability-to-the-clock-divis.patch @@ -0,0 +1,58 @@ +From 0ebcd5ddb1910ff45431796a3bd956b58a74adff Mon Sep 17 00:00:00 2001 +From: digitalLumberjack +Date: Fri, 10 Jun 2022 22:03:03 +0200 +Subject: [PATCH 6/8] linux bcm clk add roundup ability to the clock divisor + +The commit reverted the round up ability for the bcm clock divisor. + +It made clocks for low definitons having bad calculation. +--- + drivers/clk/bcm/clk-bcm2835.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index eecb2daa423f..e9a824175e37 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -941,7 +941,8 @@ static int bcm2835_clock_is_on(struct clk_hw *hw) + + static u32 bcm2835_clock_choose_div(struct clk_hw *hw, + unsigned long rate, +- unsigned long parent_rate) ++ unsigned long parent_rate, ++ bool round_up) + { + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + const struct bcm2835_clock_data *data = clock->data; +@@ -952,6 +953,10 @@ static u32 bcm2835_clock_choose_div(struct clk_hw *hw, + + do_div(temp, rate); + div = temp; ++ ++ /* Round up and mask off the unused bits */ ++ if (round_up && ((div & unused_frac_mask) != 0 || do_div(temp, rate) != 0)) ++ div += unused_frac_mask + 1; + div &= ~unused_frac_mask; + + /* different clamping limits apply for a mash clock */ +@@ -1135,7 +1140,7 @@ static int bcm2835_clock_set_rate_and_parent(struct clk_hw *hw, + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; +- u32 div = bcm2835_clock_choose_div(hw, rate, parent_rate); ++ u32 div = bcm2835_clock_choose_div(hw, rate, parent_rate, false); + u32 ctl; + + spin_lock(&cprman->regs_lock); +@@ -1201,7 +1206,7 @@ static unsigned long bcm2835_clock_choose_div_and_prate(struct clk_hw *hw, + + if (!(BIT(parent_idx) & data->set_rate_parent)) { + *prate = clk_hw_get_rate(parent); +- *div = bcm2835_clock_choose_div(hw, rate, *prate); ++ *div = bcm2835_clock_choose_div(hw, rate, *prate, true); + + *avgrate = bcm2835_clock_rate_from_divisor(clock, *prate, *div); + +-- +2.44.0 + diff --git a/board/recalbox/rpi/kernel_patches/6.6/0007-feat-add-retroflag-gpi2w-dpi-panel-for-kms-driver.patch b/board/recalbox/rpi/kernel_patches/6.6/0007-feat-add-retroflag-gpi2w-dpi-panel-for-kms-driver.patch new file mode 100644 index 0000000000000000000000000000000000000000..e1200d0b8b0c1d6618e8d881a5f87d8b4184c23a --- /dev/null +++ b/board/recalbox/rpi/kernel_patches/6.6/0007-feat-add-retroflag-gpi2w-dpi-panel-for-kms-driver.patch @@ -0,0 +1,124 @@ +From 4cd6d5b255965c95b1682d2c4cc3c75d285e29cf Mon Sep 17 00:00:00 2001 +From: David Barbion +Date: Fri, 6 Jan 2023 21:04:11 +0100 +Subject: [PATCH 7/8] feat: add retroflag gpi2w dpi panel for kms driver + +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + .../vc4-kms-dpi-retroflag-gpi2w-overlay.dts | 44 +++++++++++++++++++ + drivers/gpu/drm/panel/panel-simple.c | 29 ++++++++++++ + 3 files changed, 74 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dpi-retroflag-gpi2w-overlay.dts + +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index 6975e3c89f62..c309bd6b413d 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -303,6 +303,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + vc4-kms-dpi-panel.dtbo \ + vc4-kms-dpi-piboydmg.dtbo \ + vc4-kms-dpi-a030vvn01-0.dtbo \ ++ vc4-kms-dpi-retroflag-gpi2w.dtbo \ + vc4-kms-dsi-7inch.dtbo \ + vc4-kms-dsi-generic.dtbo \ + vc4-kms-dsi-ili9881-5inch.dtbo \ +diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-retroflag-gpi2w-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-retroflag-gpi2w-overlay.dts +new file mode 100644 +index 000000000000..473a9f812087 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-retroflag-gpi2w-overlay.dts +@@ -0,0 +1,44 @@ ++/* ++ * vc4-kms-dpi-a030vvn01-1-overlay.dts ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++#include ++#include ++ ++/ { ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target-path = "/"; ++ __overlay__ { ++ panel: panel { ++ compatible = "retroflag,gpi2w", "simple-panel"; ++ ++ port { ++ panel_in: endpoint { ++ remote-endpoint = <&dpi_out>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&dpi>; ++ __overlay__ { ++ status = "okay"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dpi_18bit_cpadhi_gpio0>; ++ ++ port { ++ dpi_out: endpoint { ++ remote-endpoint = <&panel_in>; ++ }; ++ }; ++ }; ++ }; ++}; +diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c +index 9c9c86b0485e..fa8d53e90a0a 100644 +--- a/drivers/gpu/drm/panel/panel-simple.c ++++ b/drivers/gpu/drm/panel/panel-simple.c +@@ -2286,6 +2286,32 @@ static const struct panel_desc auo_a030vvn01 = { + .connector_type = DRM_MODE_CONNECTOR_DPI, + }; + ++static const struct display_timing retroflag_gpi2w_timing = { ++ .pixelclock = { 19200000, 19200000, 19200000}, ++ .hactive = { 640, 640, 640 }, ++ .hfront_porch = { 1, 1, 1 }, ++ .hback_porch = { 20, 20, 20 }, ++ .hsync_len = { 1, 1, 1}, ++ .vactive = { 480, 480, 480 }, ++ .vfront_porch = { 1, 1, 1}, ++ .vback_porch = { 2, 2, 2 }, ++ .vsync_len = { 1, 1, 1 }, ++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, ++}; ++ ++static const struct panel_desc retroflag_gpi2w = { ++ .timings = &retroflag_gpi2w_timing, ++ .num_timings = 1, ++ .bpc = 6, ++ .size = { ++ .width = 60, ++ .height = 45, ++ }, ++ .bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI, ++ .bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE, ++ .connector_type = DRM_MODE_CONNECTOR_DPI, ++}; ++ + static const struct display_timing innolux_at056tn53v1_timing = { + .pixelclock = { 39700000, 39700000, 39700000}, + .hactive = { 640, 640, 640 }, +@@ -4430,6 +4456,9 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "auo,a030vvn01", + .data = &auo_a030vvn01, ++ }, { ++ .compatible = "retroflag,gpi2w", ++ .data = &retroflag_gpi2w, + }, { + .compatible = "innolux,at056tn53v1", + .data = &innolux_at056tn53v1, +-- +2.44.0 + diff --git a/configs/recalbox-rpi1_defconfig b/configs/recalbox-rpi1_defconfig index 2560f9e581c25e81febff06f758c0680f3c03544..915dff9d07da1f1f9d3d68b85629c9e0b98ae274 100644 --- a/configs/recalbox-rpi1_defconfig +++ b/configs/recalbox-rpi1_defconfig @@ -29,12 +29,12 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm bcm2708-rpi-zero-w" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2708-rpi-b broadcom/bcm2708-rpi-b-plus broadcom/bcm2708-rpi-cm broadcom/bcm2708-rpi-zero broadcom/bcm2708-rpi-zero-w" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y BR2_LINUX_KERNEL_DTS_INSTALL_OVERLAYS=y BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config" diff --git a/configs/recalbox-rpi3_defconfig b/configs/recalbox-rpi3_defconfig index 426d2217037649094a84e92d9a6d54da8be24a27..d4ce6873d3d437bcaa743ea53bdd1f3d2b33054e 100644 --- a/configs/recalbox-rpi3_defconfig +++ b/configs/recalbox-rpi3_defconfig @@ -30,12 +30,12 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3 bcm2710-rpi-zero-2 bcm2710-rpi-zero-2-w" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3 broadcom/bcm2710-rpi-zero-2 broadcom/bcm2710-rpi-zero-2-w" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y BR2_LINUX_KERNEL_DTS_INSTALL_OVERLAYS=y BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config" diff --git a/configs/recalbox-rpi4_64_defconfig b/configs/recalbox-rpi4_64_defconfig index 615e45d80e061ec647de35bf1996427d0a4d1756..2f8a908a278fb8a4178e6cf15d4188adaffe6d3e 100644 --- a/configs/recalbox-rpi4_64_defconfig +++ b/configs/recalbox-rpi4_64_defconfig @@ -29,10 +29,10 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-400 broadcom/bcm2711-rpi-cm4" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y diff --git a/configs/recalbox-rpi5_64_defconfig b/configs/recalbox-rpi5_64_defconfig index 52f1236378b0e38f08b48785b403cac67ebbfcf5..c2aa1192b50c004a4bf20e41aeb688f00d257ad5 100644 --- a/configs/recalbox-rpi5_64_defconfig +++ b/configs/recalbox-rpi5_64_defconfig @@ -30,12 +30,12 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcm2712" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-5-b" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-5-b broadcom/bcm2712d0-rpi-5-b" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y BR2_LINUX_KERNEL_DTS_INSTALL_OVERLAYS=y BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config" diff --git a/configs/recalbox-rpizero2_defconfig b/configs/recalbox-rpizero2_defconfig index bd913c88b4ded1523ceb7a140e5658dd5db80515..7c74a32f23728991df018515933042cd1838d05b 100644 --- a/configs/recalbox-rpizero2_defconfig +++ b/configs/recalbox-rpizero2_defconfig @@ -30,10 +30,10 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-zero-2 bcm2710-rpi-zero-2-w" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y diff --git a/configs/recalbox-rpizero2legacy_defconfig b/configs/recalbox-rpizero2legacy_defconfig index ce874b3b2899d6f70b074d8c31e3d78aed9ff02d..86a0fcd796c12eb0bb8c5b02bd1f1518ff8a2c83 100644 --- a/configs/recalbox-rpizero2legacy_defconfig +++ b/configs/recalbox-rpizero2legacy_defconfig @@ -30,10 +30,10 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recal BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,d02bd251d7f85e3aec02e5752df2f44a35961360)/linux-d02bd251d7f85e3aec02e5752df2f44a35961360.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.1 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.1" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,ba0f2212e0e100ee16bdde76b7efca6bb8ee9446)/linux-ba0f2212e0e100ee16bdde76b7efca6bb8ee9446.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/kernel_patches/6.6 $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches/6.6" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.1-defconfig-fragment.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-6.6-defconfig-fragment.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3 bcm2710-rpi-zero-2 bcm2710-rpi-zero-2-w" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y diff --git a/custom/list.hash b/custom/list.hash index 42c662bb03e463744f2cf37455042b51632d2d39..c0bbff9275420b8d63e1ed3f9b435a04fede5ea6 100644 --- a/custom/list.hash +++ b/custom/list.hash @@ -4,7 +4,6 @@ # * a line of minus signs ('-') indicates a file that we remove from Buildroot external tree # * a line of plus signs ('+') indicates a file that we add to the Buildroot external tree -++++++++++++++++++++++++++++++++ package/sdl2/0001-rpi5-disable-async-pageflip.patch -------------------------------- package/llvm/0001-nfc-Fix-missing-include.patch -------------------------------- package/llvm/0002-Add-missing-cstdint-header-to-Signals.h.patch -------------------------------- package/mesa3d/0004-Fix-uClibc-build.patch @@ -33,7 +32,10 @@ dfe35e9f39b004b3977968223107bd51 package/libgtk3/0001-disable-atk-bridge.patch 8e9d594ccabd51a6863314c188bb2e3b package/llvm/llvm.mk 64b2fa393cafff6958f4bfd2b9e30f24 package/luajit/Config.in 201ba12d953eb7111d08b3952a7b6b3c package/mesa3d/Config.in +848b4032bd832a28461e364ce5926383 package/mesa3d/mesa3d.hash 6d6f9c8f807001b9b421d1b924e8d2f3 package/mesa3d/mesa3d.mk +7e9d13d9f582e09bffee968741ff90f4 package/meson/meson.hash +19ea768cd63d0ee6a55cb6b25c7f0b31 package/meson/meson.mk f0dfbbe844feaf583ba0cd9432704f09 package/mosquitto/mosquitto.mk 2cd9a8d1ff6aa58b1ae2709179929998 package/mpv/mpv.mk eccca9996f67a8e3091c986d75a6b85e package/python-pygame/python-pygame.hash @@ -41,6 +43,7 @@ eccca9996f67a8e3091c986d75a6b85e package/python-pygame/python-pygame.hash 0f2a1376ed896b443e62fbf9434a99b5 package/rpi-firmware/Config.in bb6386cc54355917f1dad1fd576d9298 package/rpi-firmware/rpi-firmware.hash dd767d51e6ab8fa62a8cf94e23d44980 package/rpi-firmware/rpi-firmware.mk +4d001cdf82fc070022638c94d19c6525 package/sdl2/sdl2.hash 3bfcf3601bf15f5e14fc4aa202bb7c86 package/sdl2/sdl2.mk f976cbc5a7299cfc48ec83f255ddf85b package/sdl2_mixer/sdl2_mixer.mk 76f5941c64fe63d71fdbafde3594ba78 package/sdl_sound/Config.in diff --git a/custom/package/mesa3d/mesa3d.hash b/custom/package/mesa3d/mesa3d.hash new file mode 100644 index 0000000000000000000000000000000000000000..9956c1004c9030827cad4bedeb4766e71d43cb82 --- /dev/null +++ b/custom/package/mesa3d/mesa3d.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/mesa-announce/2023-January/000703.html +sha256 4ea18b1155a4544a09f7361848974768f6f73c19d88f63de2ec650be313b2d0c mesa-24.2.3.tar.xz +sha512 7a1ace23568d1907b778a2859f97c8988a414ba74e02e1fb5af6f95f768e1b1a2dfdaf412b0d655678ed915d28273953fd1236ebcd87553a1880f1a7f3ea4d44 mesa-24.2.3.tar.xz +# License +sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/custom/package/mesa3d/mesa3d.hash.patch b/custom/package/mesa3d/mesa3d.hash.patch new file mode 100644 index 0000000000000000000000000000000000000000..3543e5b832eca3daa0698f56a99a231803c3cd7e --- /dev/null +++ b/custom/package/mesa3d/mesa3d.hash.patch @@ -0,0 +1,12 @@ +diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash +index e4de997f0e..9956c1004c 100644 +--- a/package/mesa3d/mesa3d.hash ++++ b/package/mesa3d/mesa3d.hash +@@ -1,5 +1,5 @@ + # From https://lists.freedesktop.org/archives/mesa-announce/2023-January/000703.html +-sha256 37a1ddaf03f41919ee3c89c97cff41e87de96e00e9d3247959cc8279d8294593 mesa-22.3.4.tar.xz +-sha512 6af340153244d3e95d0e155a45d6db134335654d62590797ae0ef6ba44c2ccfe91ebf95f70ff82c67cee108ac35536767b1f6848d6d1129f52eb9e8414ee321d mesa-22.3.4.tar.xz ++sha256 4ea18b1155a4544a09f7361848974768f6f73c19d88f63de2ec650be313b2d0c mesa-24.2.3.tar.xz ++sha512 7a1ace23568d1907b778a2859f97c8988a414ba74e02e1fb5af6f95f768e1b1a2dfdaf412b0d655678ed915d28273953fd1236ebcd87553a1880f1a7f3ea4d44 mesa-24.2.3.tar.xz + # License + sha256 a00275a53178e2645fb65be99a785c110513446a5071ff2c698ed260ad917d75 docs/license.rst diff --git a/custom/package/mesa3d/mesa3d.mk b/custom/package/mesa3d/mesa3d.mk index 926910d5cf7f5d604114fcba68fa811da75714b7..6ccc090cbeedb48c84a21abff90d2acd0ea4fa45 100644 --- a/custom/package/mesa3d/mesa3d.mk +++ b/custom/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 22.3.4 +MESA3D_VERSION = 24.2.3 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://archive.mesa3d.org MESA3D_LICENSE = MIT, SGI, Khronos @@ -21,6 +21,7 @@ MESA3D_DEPENDENCIES = \ host-bison \ host-flex \ host-python-mako \ + host-python-pyyaml \ expat \ libdrm \ zlib diff --git a/custom/package/mesa3d/mesa3d.mk.patch b/custom/package/mesa3d/mesa3d.mk.patch index a13503771896ff0a7d372c9840375ae6775ac6dc..4894fd0825804519561675e6b9334c485dfc2b14 100644 --- a/custom/package/mesa3d/mesa3d.mk.patch +++ b/custom/package/mesa3d/mesa3d.mk.patch @@ -1,8 +1,25 @@ diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk -index 36b7151510..926910d5cf 100644 +index 36b7151510..6ccc090cbe 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk -@@ -119,7 +119,10 @@ MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D) += v3d +@@ -5,7 +5,7 @@ + ################################################################################ + + # When updating the version, please also update mesa3d-headers +-MESA3D_VERSION = 22.3.4 ++MESA3D_VERSION = 24.2.3 + MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz + MESA3D_SITE = https://archive.mesa3d.org + MESA3D_LICENSE = MIT, SGI, Khronos +@@ -21,6 +21,7 @@ MESA3D_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-python-mako \ ++ host-python-pyyaml \ + expat \ + libdrm \ + zlib +@@ -119,7 +120,10 @@ MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D) += v3d MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4) += vc4 MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL) += virgl # Vulkan Drivers diff --git a/custom/package/meson/meson.hash b/custom/package/meson/meson.hash new file mode 100644 index 0000000000000000000000000000000000000000..216f4eb689ec6e732913c3a7ef93c2d3791c3f82 --- /dev/null +++ b/custom/package/meson/meson.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://github.com/mesonbuild/meson/releases/download/1.0.0/meson-1.0.0.tar.gz.asc +sha256 d9616c44cd6c53689ff8f05fc6958a693f2e17c3472a8daf83cee55dabff829f meson-1.1.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/custom/package/meson/meson.hash.patch b/custom/package/meson/meson.hash.patch new file mode 100644 index 0000000000000000000000000000000000000000..7ac9cea58ec947eddc36be941c5b4160d531b569 --- /dev/null +++ b/custom/package/meson/meson.hash.patch @@ -0,0 +1,10 @@ +diff --git a/package/meson/meson.hash b/package/meson/meson.hash +index 6993b756ae..216f4eb689 100644 +--- a/package/meson/meson.hash ++++ b/package/meson/meson.hash +@@ -1,4 +1,4 @@ + # Locally calculated after checking pgp signature + # https://github.com/mesonbuild/meson/releases/download/1.0.0/meson-1.0.0.tar.gz.asc +-sha256 aa50a4ba4557c25e7d48446abfde857957dcdf58385fffbe670ba0e8efacce05 meson-1.0.0.tar.gz ++sha256 d9616c44cd6c53689ff8f05fc6958a693f2e17c3472a8daf83cee55dabff829f meson-1.1.0.tar.gz + sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/custom/package/meson/meson.mk b/custom/package/meson/meson.mk new file mode 100644 index 0000000000000000000000000000000000000000..6b901eb8059d6978d97c871236c9250e51edf91e --- /dev/null +++ b/custom/package/meson/meson.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# meson +# +################################################################################ + +MESON_VERSION = 1.1.0 +MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION) +MESON_LICENSE = Apache-2.0 +MESON_LICENSE_FILES = COPYING +MESON_SETUP_TYPE = setuptools + +HOST_MESON_DEPENDENCIES = host-ninja + +# Avoid interpreter shebang longer than 128 chars +define HOST_MESON_SET_INTERPRETER + $(SED) '1s:.*:#!/usr/bin/env python3:' $(HOST_DIR)/bin/meson +endef +HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_SET_INTERPRETER + +$(eval $(host-python-package)) diff --git a/custom/package/meson/meson.mk.patch b/custom/package/meson/meson.mk.patch new file mode 100644 index 0000000000000000000000000000000000000000..2290c8ad8b0fd0d2f44de2abc9c431d06038699f --- /dev/null +++ b/custom/package/meson/meson.mk.patch @@ -0,0 +1,13 @@ +diff --git a/package/meson/meson.mk b/package/meson/meson.mk +index e417d8d627..6b901eb805 100644 +--- a/package/meson/meson.mk ++++ b/package/meson/meson.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-MESON_VERSION = 1.0.0 ++MESON_VERSION = 1.1.0 + MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION) + MESON_LICENSE = Apache-2.0 + MESON_LICENSE_FILES = COPYING diff --git a/custom/package/rpi-firmware/rpi-firmware.hash b/custom/package/rpi-firmware/rpi-firmware.hash index 778f9e3400412dda88c0affe6ac62cc7092c514d..c064e842d90f58d021932f3e7859e7f5a2782b92 100644 --- a/custom/package/rpi-firmware/rpi-firmware.hash +++ b/custom/package/rpi-firmware/rpi-firmware.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 583f11eb4b0c4f2673e4a90519013f654aeddd018c03604c8c1b933651602edb rpi-firmware-7273369aded28c56937cda2ec8e305f86eaa1203.tar.gz +sha256 c6e50e82cad762db775db1aa0f279164e7d513689a4005d8d11ebe467da905a4 rpi-firmware-6c7d1719966f459ab0349c8af32f0c774c696234.tar.gz sha256 c7283ff51f863d93a275c66e3b4cb08021a5dd4d8c1e7acc47d872fbe52d3d6b boot/LICENCE.broadcom diff --git a/custom/package/rpi-firmware/rpi-firmware.hash.patch b/custom/package/rpi-firmware/rpi-firmware.hash.patch index f147a134bb01ac1c936da52f0f1f1c490f40be7d..bfdc3600fda532b2f4cbc9b7814028dd97930191 100644 --- a/custom/package/rpi-firmware/rpi-firmware.hash.patch +++ b/custom/package/rpi-firmware/rpi-firmware.hash.patch @@ -1,9 +1,9 @@ diff --git a/package/rpi-firmware/rpi-firmware.hash b/package/rpi-firmware/rpi-firmware.hash -index ec13115f3b..778f9e3400 100644 +index ec13115f3b..c064e842d9 100644 --- a/package/rpi-firmware/rpi-firmware.hash +++ b/package/rpi-firmware/rpi-firmware.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 33aea2cb9c3be94c3dd6a96fbb3443eee5af1dc5fc9140e1fadc50832983064e rpi-firmware-3f20b832b27cd730deb6419b570f31a98167eef6.tar.gz -+sha256 583f11eb4b0c4f2673e4a90519013f654aeddd018c03604c8c1b933651602edb rpi-firmware-7273369aded28c56937cda2ec8e305f86eaa1203.tar.gz ++sha256 c6e50e82cad762db775db1aa0f279164e7d513689a4005d8d11ebe467da905a4 rpi-firmware-6c7d1719966f459ab0349c8af32f0c774c696234.tar.gz sha256 c7283ff51f863d93a275c66e3b4cb08021a5dd4d8c1e7acc47d872fbe52d3d6b boot/LICENCE.broadcom diff --git a/custom/package/rpi-firmware/rpi-firmware.mk b/custom/package/rpi-firmware/rpi-firmware.mk index fbc7e43aae5ec3cf8b17b53064499c9680681825..fce789325f78776f4a4a00c7d415d8f7bd0c6db9 100644 --- a/custom/package/rpi-firmware/rpi-firmware.mk +++ b/custom/package/rpi-firmware/rpi-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 7273369aded28c56937cda2ec8e305f86eaa1203 +RPI_FIRMWARE_VERSION = 6c7d1719966f459ab0349c8af32f0c774c696234 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom diff --git a/custom/package/rpi-firmware/rpi-firmware.mk.patch b/custom/package/rpi-firmware/rpi-firmware.mk.patch index 0ca80ac0e2ec18acd92a9eae3c288733a8c905fe..32267227bb489bbb449df83135103775c920fcba 100644 --- a/custom/package/rpi-firmware/rpi-firmware.mk.patch +++ b/custom/package/rpi-firmware/rpi-firmware.mk.patch @@ -1,5 +1,5 @@ diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk -index 53d6d8ca06..fbc7e43aae 100644 +index 53d6d8ca06..fce789325f 100644 --- a/package/rpi-firmware/rpi-firmware.mk +++ b/package/rpi-firmware/rpi-firmware.mk @@ -4,7 +4,7 @@ @@ -7,7 +7,7 @@ index 53d6d8ca06..fbc7e43aae 100644 ################################################################################ -RPI_FIRMWARE_VERSION = 3f20b832b27cd730deb6419b570f31a98167eef6 -+RPI_FIRMWARE_VERSION = 7273369aded28c56937cda2ec8e305f86eaa1203 ++RPI_FIRMWARE_VERSION = 6c7d1719966f459ab0349c8af32f0c774c696234 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom diff --git a/custom/package/sdl2/0001-rpi5-disable-async-pageflip.patch b/custom/package/sdl2/0001-rpi5-disable-async-pageflip.patch deleted file mode 100644 index ed5ce852f6215cd8dbd67e68ab9f7fa2c03889ea..0000000000000000000000000000000000000000 --- a/custom/package/sdl2/0001-rpi5-disable-async-pageflip.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c -index 83cdbf0..827750f 100644 ---- a/src/video/kmsdrm/SDL_kmsdrmvideo.c -+++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c -@@ -951,8 +951,11 @@ KMSDRM_InitDisplays (_THIS) { - if (ret) { - SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "Could not determine async page flip capability."); - } -+#ifdef SDL_PI5_NO_ASYNCPAGEFLIP -+ viddata->async_pageflip_support = SDL_FALSE; -+#else - viddata->async_pageflip_support = async_pageflip ? SDL_TRUE : SDL_FALSE; -- -+#endif - /***********************************/ - /* Block for Vulkan compatibility. */ - /***********************************/ diff --git a/custom/package/sdl2/sdl2.hash b/custom/package/sdl2/sdl2.hash new file mode 100644 index 0000000000000000000000000000000000000000..9d0e8b51bde73d8f8b388069e8b690d539343335 --- /dev/null +++ b/custom/package/sdl2/sdl2.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.26.5.tar.gz.sig +sha256 2508c80438cd5ff3bbeb8fe36b8f3ce7805018ff30303010b61b03bb83ab9694 SDL2-2.30.7.tar.gz +# Locally calculated +sha256 9928507f684c1965d07f2b6ef4b4723d5efc2f6b4ab731f743a413c51c319927 LICENSE.txt diff --git a/custom/package/sdl2/sdl2.hash.patch b/custom/package/sdl2/sdl2.hash.patch new file mode 100644 index 0000000000000000000000000000000000000000..9713b22e113f8da105e0384601a63745ca3ec12c --- /dev/null +++ b/custom/package/sdl2/sdl2.hash.patch @@ -0,0 +1,10 @@ +diff --git a/package/sdl2/sdl2.hash b/package/sdl2/sdl2.hash +index 0c7bdf7fa1..9d0e8b51bd 100644 +--- a/package/sdl2/sdl2.hash ++++ b/package/sdl2/sdl2.hash +@@ -1,4 +1,4 @@ + # Locally calculated after checking http://www.libsdl.org/release/SDL2-2.26.5.tar.gz.sig +-sha256 ad8fea3da1be64c83c45b1d363a6b4ba8fd60f5bde3b23ec73855709ec5eabf7 SDL2-2.26.5.tar.gz ++sha256 2508c80438cd5ff3bbeb8fe36b8f3ce7805018ff30303010b61b03bb83ab9694 SDL2-2.30.7.tar.gz + # Locally calculated + sha256 9928507f684c1965d07f2b6ef4b4723d5efc2f6b4ab731f743a413c51c319927 LICENSE.txt diff --git a/custom/package/sdl2/sdl2.mk b/custom/package/sdl2/sdl2.mk index ebefc3383b1db471caadab62b05ab2b440e971ac..461e020834bfabce468e2a4bef7922269d221d24 100644 --- a/custom/package/sdl2/sdl2.mk +++ b/custom/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.26.5 +SDL2_VERSION = 2.30.7 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib @@ -209,8 +209,4 @@ ifeq ($(BR2_PACKAGE_LIBRGA),y) SDL2_DEPENDENCIES += librga endif -ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RPI5_64),y) - TARGET_CFLAGS += -DSDL_PI5_NO_ASYNCPAGEFLIP=1 -endif - $(eval $(autotools-package)) diff --git a/custom/package/sdl2/sdl2.mk.patch b/custom/package/sdl2/sdl2.mk.patch index b97d9052c2b1e777031ec76fb8b80bd13319e4c1..d7406792fb5d6a57137746c32d4692c759745b10 100644 --- a/custom/package/sdl2/sdl2.mk.patch +++ b/custom/package/sdl2/sdl2.mk.patch @@ -1,7 +1,16 @@ diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk -index 5f2e1e0ed1..ebefc3383b 100644 +index 5f2e1e0ed1..461e020834 100644 --- a/package/sdl2/sdl2.mk +++ b/package/sdl2/sdl2.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-SDL2_VERSION = 2.26.5 ++SDL2_VERSION = 2.30.7 + SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz + SDL2_SITE = http://www.libsdl.org/release + SDL2_LICENSE = Zlib @@ -15,18 +15,17 @@ SDL2_INSTALL_STAGING = YES SDL2_CONFIG_SCRIPTS = sdl2-config @@ -54,7 +63,7 @@ index 5f2e1e0ed1..ebefc3383b 100644 ifeq ($(BR2_PACKAGE_SDL2_KMSDRM),y) SDL2_DEPENDENCIES += libdrm libgbm libegl SDL2_CONF_OPTS += --enable-video-kmsdrm -@@ -181,4 +198,19 @@ else +@@ -181,4 +198,15 @@ else SDL2_CONF_OPTS += --disable-video-kmsdrm endif @@ -68,9 +77,5 @@ index 5f2e1e0ed1..ebefc3383b 100644 +ifeq ($(BR2_PACKAGE_LIBRGA),y) +SDL2_DEPENDENCIES += librga +endif -+ -+ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RPI5_64),y) -+ TARGET_CFLAGS += -DSDL_PI5_NO_ASYNCPAGEFLIP=1 -+endif + $(eval $(autotools-package)) diff --git a/package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat b/package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat similarity index 100% rename from package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat rename to package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat diff --git a/package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt b/package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt similarity index 100% rename from package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt rename to package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt diff --git a/package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst b/package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst similarity index 100% rename from package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst rename to package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst diff --git a/package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers b/package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers similarity index 100% rename from package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers rename to package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers diff --git a/package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original b/package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original similarity index 100% rename from package/arcade-dats/precompiled/atomiswave-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original rename to package/arcade-dats/precompiled/atomiswave-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original diff --git a/package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat b/package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat similarity index 100% rename from package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat rename to package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat diff --git a/package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt b/package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt similarity index 100% rename from package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt rename to package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt diff --git a/package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst b/package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst similarity index 100% rename from package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst rename to package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst diff --git a/package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers b/package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers similarity index 100% rename from package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers rename to package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers diff --git a/package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original b/package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original similarity index 100% rename from package/arcade-dats/precompiled/naomi-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original rename to package/arcade-dats/precompiled/naomi-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original diff --git a/package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat b/package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat similarity index 100% rename from package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat rename to package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat diff --git a/package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt b/package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt similarity index 100% rename from package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt rename to package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt diff --git a/package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst b/package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst similarity index 100% rename from package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst rename to package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst diff --git a/package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers b/package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers similarity index 100% rename from package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers rename to package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers diff --git a/package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original b/package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original similarity index 100% rename from package/arcade-dats/precompiled/naomi2-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original rename to package/arcade-dats/precompiled/naomi2-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original diff --git a/package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat b/package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat similarity index 100% rename from package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat rename to package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.dat diff --git a/package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt b/package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt similarity index 100% rename from package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt rename to package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.fdt diff --git a/package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst b/package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst similarity index 100% rename from package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst rename to package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst diff --git a/package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers b/package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers similarity index 100% rename from package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers rename to package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.manufacturers diff --git a/package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original b/package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original similarity index 100% rename from package/arcade-dats/precompiled/naomigd-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original rename to package/arcade-dats/precompiled/naomigd-next-92a10ba0f0a5ca0d1ec9498962002f4cdcc8e7f6.lst.original diff --git a/package/libretro-flycast-next/libretro-flycast-next.mk b/package/libretro-flycast-next/libretro-flycast-next.mk index e73277f1922bdfbaf07efa1d2a3f14724b113feb..dfe43bb38c6f58a183ab5aec80252870a4ce28ff 100644 --- a/package/libretro-flycast-next/libretro-flycast-next.mk +++ b/package/libretro-flycast-next/libretro-flycast-next.mk @@ -38,10 +38,10 @@ endif LIBRETRO_FLYCAST_NEXT_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(COMPILER_COMMONS_CXXFLAGS_EXE) $(LIBRETRO_FLYCAST_NEXT_SIDE_LIBS)" define LIBRETRO_FLYCAST_NEXT_INSTALL_TARGET_CMDS - $(call InstallArcadeFiles,libretro,naomi,$(LIBRETRO_FLYCAST_NEXT_VERSION)) - $(call InstallArcadeFiles,libretro,naomi2,$(LIBRETRO_FLYCAST_NEXT_VERSION)) - $(call InstallArcadeFiles,libretro,naomigd,$(LIBRETRO_FLYCAST_NEXT_VERSION)) - $(call InstallArcadeFiles,libretro,atomiswave,$(LIBRETRO_FLYCAST_NEXT_VERSION)) + $(call InstallArcadeFiles,libretro,naomi-next,$(LIBRETRO_FLYCAST_NEXT_VERSION)) + $(call InstallArcadeFiles,libretro,naomi2-next,$(LIBRETRO_FLYCAST_NEXT_VERSION)) + $(call InstallArcadeFiles,libretro,naomigd-next,$(LIBRETRO_FLYCAST_NEXT_VERSION)) + $(call InstallArcadeFiles,libretro,atomiswave-next,$(LIBRETRO_FLYCAST_NEXT_VERSION)) $(INSTALL) -D $(@D)/flycast_libretro.so \ $(TARGET_DIR)/usr/lib/libretro/flycast-next_libretro.so diff --git a/package/mesa3d-rpi5/mesa3d-rpi5.mk b/package/mesa3d-rpi5/mesa3d-rpi5.mk index dfa75ccb486e9d839c91f49321572b1c375e9c57..ed88219a560a847e8c79821b7d4ba462ac6e6aad 100644 --- a/package/mesa3d-rpi5/mesa3d-rpi5.mk +++ b/package/mesa3d-rpi5/mesa3d-rpi5.mk @@ -5,9 +5,9 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_RPI5_VERSION = f59665bb62b579c6cc26155a26ce557f9f3357d2 -MESA3D_RPI5_SITE = https://gitlab.freedesktop.org/mesa/mesa.git -MESA3D_RPI5_SITE_METHOD = git +MESA3D_RPI5_VERSION = 24.2.3 +MESA3D_RPI5_SITE = https://archive.mesa3d.org +MESA3D_RPI5_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_RPI5_LICENSE = MIT, SGI, Khronos MESA3D_RPI5_LICENSE_FILES = docs/license.rst MESA3D_RPI5_CPE_ID_VENDOR = mesa3d @@ -21,6 +21,7 @@ MESA3D_RPI5_DEPENDENCIES = \ host-bison \ host-flex \ host-python-mako \ + host-python-pyyaml \ expat \ libdrm \ zlib diff --git a/package/recalbox-bluetooth/recalbox-bluetooth.mk b/package/recalbox-bluetooth/recalbox-bluetooth.mk index 873d1b5626e2e28a86b92e4e56ed87309960ff6f..506b1b61238a681f615b33d1eb9639c025abe2ca 100644 --- a/package/recalbox-bluetooth/recalbox-bluetooth.mk +++ b/package/recalbox-bluetooth/recalbox-bluetooth.mk @@ -8,9 +8,7 @@ RECALBOX_BLUETOOTH_SOURCE = RECALBOX_BLUETOOTH_VERSION = 1.0 RECALBOX_BLUETOOTH_LICENSE = MIT -ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RPI0)$(BR2_PACKAGE_RECALBOX_TARGET_RPIZERO2LEGACY)$(BR2_PACKAGE_RECALBOX_TARGET_RPI1)$(BR2_PACKAGE_RECALBOX_TARGET_RPI3)$(BR2_PACKAGE_RECALBOX_TARGET_RPI4)$(BR2_PACKAGE_RECALBOX_TARGET_RPIZERO2)$(BR2_PACKAGE_RECALBOX_TARGET_RPI4_64)$(BR2_PACKAGE_RECALBOX_TARGET_RPI5_64),y) -RECALBOX_BLUETOOTH_BT_CONTROLLERS=rpi -else ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RG353X),y) +ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RG353X),y) RECALBOX_BLUETOOTH_BT_CONTROLLERS=rg353x else RECALBOX_BLUETOOTH_BT_CONTROLLERS=others diff --git a/package/recalbox-bluetooth/src/scripts/bluetoothcontrollers.sh.rpi b/package/recalbox-bluetooth/src/scripts/bluetoothcontrollers.sh.rpi deleted file mode 100755 index 7c59cf394c2588bb2c801e36f11c44d2f6703298..0000000000000000000000000000000000000000 --- a/package/recalbox-bluetooth/src/scripts/bluetoothcontrollers.sh.rpi +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -HCIATTACH=/usr/bin/hciattach -SERIAL=$(awk '/^Serial/{ print $3 }' /proc/cpuinfo) -B1=${SERIAL:10:2} -B2=${SERIAL:12:2} -B3=${SERIAL:14:2} -BDADDR=$(printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))) - -if [ "$(cat /proc/device-tree/aliases/uart0)" = "$(cat /proc/device-tree/aliases/serial1)" ] ; then - if [ "$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' ')" = "16" ] ; then - $HCIATTACH /dev/serial1 bcm43xx 3000000 flow - $BDADDR - else - $HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR - fi -else - $HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR -fi diff --git a/package/recalbox-rgb-jamma/Config.in b/package/recalbox-rgb-jamma/Config.in index bf9f2fce4eacebcc66323d2e9cbaed017b170ec2..c3f4a82b9b89b316126b5822040401c4aca9fee7 100644 --- a/package/recalbox-rgb-jamma/Config.in +++ b/package/recalbox-rgb-jamma/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_RECALBOX_RGB_JAMMA select BR2_PACKAGE_RECALBOX_I2S_AUDIO select BR2_PACKAGE_RPI_UTILS select BR2_PACKAGE_MOSQUITTO + select BR2_PACKAGE_LIBDRM help Support for Recalbox RGB Jamma, the jamma dac for Rasbperry Pi 5, 4, 400, and 3 diff --git a/package/recalbox-rgb-jamma/S03rrgbjamma b/package/recalbox-rgb-jamma/S03rrgbjamma index 17c71f95ef1bf97f344a093114c73fde15a20e80..10ca7f7c7397e9372b635fae96ca8a86f621ae84 100644 --- a/package/recalbox-rgb-jamma/S03rrgbjamma +++ b/package/recalbox-rgb-jamma/S03rrgbjamma @@ -22,11 +22,7 @@ if test "$1" == "start"; then modprobe i2c-dev dtoverlay "i2c0custom${board}" res="$(i2cdetect -y "${i2c}" 36 39 | grep '20:')" - if echo "$res" | grep -q -e "24 25 -- --"; then - adapter="recalboxrgbjamma-v2" - elif echo "$res" | grep -q -e "24 25 -- 27"; then - adapter="recalboxrgbjamma-v3" - elif echo "$res" | grep -q -e "24 25 26 27"; then + if echo "$res" | grep -q -e "24 25 26 27"; then adapter="recalboxrgbjamma" fi dtoverlay -r "i2c0custom${board}" diff --git a/package/recalbox-rgb-jamma/recalbox_rgb_jamma.mk b/package/recalbox-rgb-jamma/recalbox_rgb_jamma.mk index 764b618df8208196421319603d0345c96560dc35..339a3ad0c49c4c9605a02db62d0b8955cbdc2c63 100644 --- a/package/recalbox-rgb-jamma/recalbox_rgb_jamma.mk +++ b/package/recalbox-rgb-jamma/recalbox_rgb_jamma.mk @@ -27,8 +27,6 @@ define RECALBOX_RGB_JAMMA_BUILD_CMDS $(HOST_DIR)/bin/linux-dtc $(@D)/recalboxrgbjamma-pi5-overlay.dts -o $(@D)/recalboxrgbjamma-pi5.dtbo $(HOST_DIR)/bin/linux-dtc $(@D)/i2c0custom-pi5-overlay.dts -o $(@D)/i2c0custom-pi5.dtbo $(HOST_DIR)/bin/linux-dtc $(@D)/i2c0custom-overlay.dts -o $(@D)/i2c0custom.dtbo - $(HOST_DIR)/bin/linux-dtc $(@D)/recalboxrgbjamma-v2-overlay.dts -o $(@D)/recalboxrgbjamma-v2.dtbo - $(HOST_DIR)/bin/linux-dtc $(@D)/recalboxrgbjamma-v3-overlay.dts -o $(@D)/recalboxrgbjamma-v3.dtbo CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" CROSS_DIR="$(STAGING_DIR)" \ CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO) -std=c++11" \ LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ @@ -41,8 +39,6 @@ define RECALBOX_RGB_JAMMA_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0644 $(@D)/i2c0custom-pi5.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/i2c0custom-pi5.dtbo $(INSTALL) -D -m 0644 $(@D)/i2c0custom.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/i2c0custom.dtbo $(INSTALL) -D -m 0644 $(@D)/recalboxrgbjamma-pi5.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/recalboxrgbjamma-pi5.dtbo - $(INSTALL) -D -m 0644 $(@D)/recalboxrgbjamma-v2.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/recalboxrgbjamma-v2.dtbo - $(INSTALL) -D -m 0644 $(@D)/recalboxrgbjamma-v3.dtbo $(BINARIES_DIR)/rpi-firmware/overlays/recalboxrgbjamma-v3.dtbo $(INSTALL) -D -m 0744 $(RECALBOX_RGB_JAMMA_PKGDIR)/S03rrgbjamma $(TARGET_DIR)/etc/init.d/ $(INSTALL) -D -m 0744 $(@D)/screen/recalboxrgbjamma_screen $(TARGET_DIR)/usr/bin/recalboxrgbjamma_screen diff --git a/package/recalbox-romfs2/systems/atomiswave/system.ini b/package/recalbox-romfs2/systems/atomiswave/system.ini index d552104671f18a669213baa96c3b07bd73b3e5ac..85f416e63ba5b93cc9efb41b0dbd53e1b2218909 100644 --- a/package/recalbox-romfs2/systems/atomiswave/system.ini +++ b/package/recalbox-romfs2/systems/atomiswave/system.ini @@ -70,5 +70,5 @@ softpatching = 0 compatibility = high speed = high crt.available = 1 -arcade.file = atomiswave.lst +arcade.file = atomiswave-next.lst arcade.ignore = diff --git a/package/recalbox-romfs2/systems/naomi/system.ini b/package/recalbox-romfs2/systems/naomi/system.ini index 175d2c1babf0daaa45de7d5c962984116951135b..e4ed2c51d4cb9e3d01199e670a80c3ded07af444 100644 --- a/package/recalbox-romfs2/systems/naomi/system.ini +++ b/package/recalbox-romfs2/systems/naomi/system.ini @@ -64,5 +64,5 @@ softpatching = 0 compatibility = high speed = high crt.available = 1 -arcade.file = naomi.lst +arcade.file = naomi-next.lst arcade.ignore = diff --git a/package/recalbox-romfs2/systems/naomi2/system.ini b/package/recalbox-romfs2/systems/naomi2/system.ini index 738a10b4a790a98c6730ff2fbffe29c17bc0aef3..bf31a919249d38c387e0f0f72ac115d9abd4c840 100644 --- a/package/recalbox-romfs2/systems/naomi2/system.ini +++ b/package/recalbox-romfs2/systems/naomi2/system.ini @@ -58,6 +58,6 @@ netplay = 0 softpatching = 0 compatibility = high speed = high -arcade.file = naomi2.lst +arcade.file = naomi2-next.lst arcade.ignore = crt.available = 1 \ No newline at end of file diff --git a/package/recalbox-romfs2/systems/naomigd/system.ini b/package/recalbox-romfs2/systems/naomigd/system.ini index 6a83a313e70ab6ab9275536ac8b0bb496c534d03..fda93810a38ab5d33132c185ec6a73688012c1b3 100644 --- a/package/recalbox-romfs2/systems/naomigd/system.ini +++ b/package/recalbox-romfs2/systems/naomigd/system.ini @@ -50,7 +50,7 @@ softpatching = 0 compatibility = high speed = high crt.available = 1 -arcade.file = naomigd.lst +arcade.file = naomigd-next.lst arcade.ignore = [core.1] diff --git a/projects/configgen/configgen/generators/libretro/libretroGenerator.py b/projects/configgen/configgen/generators/libretro/libretroGenerator.py index 6b105bc90579fdb58c8a075d86ecb57b221b14d1..6f55d03c0944a6d310396b6ed8c1d04cb2de704e 100644 --- a/projects/configgen/configgen/generators/libretro/libretroGenerator.py +++ b/projects/configgen/configgen/generators/libretro/libretroGenerator.py @@ -435,6 +435,12 @@ class LibretroGenerator(Generator): retroarchConfig.setString(option[0], option[1]) retroarchConfig.saveFile() + if system.Core == "flycast" or system.Core == "flycast-next": + retroarchConfig.setString("audio_volume", "-2.0") + else: + retroarchConfig.setString("audio_volume", "0.0") + retroarchConfig.saveFile() + commandArgs = configuration.getCommandLineArguments(retroarchConfig, coreConfig) return configuration.getRetroarchConfigurationFileName(), \ diff --git a/projects/frontend/es-app/src/MainRunner.cpp b/projects/frontend/es-app/src/MainRunner.cpp index df40effb0d2e6af490c8105d19ff384e035761d7..5202d1d1e4dbc5375f0ee87102d07f9ab07fe8cf 100644 --- a/projects/frontend/es-app/src/MainRunner.cpp +++ b/projects/frontend/es-app/src/MainRunner.cpp @@ -38,6 +38,7 @@ #include #include #include +#include MainRunner::ExitState MainRunner::sRequestedExitState = MainRunner::ExitState::Quit; bool MainRunner::sQuitRequested = false; @@ -172,7 +173,7 @@ MainRunner::ExitState MainRunner::Run() // Start update thread { LOG(LogDebug) << "[MainRunner] Launching Network thread"; } - Upgrade networkThread(window); + Upgrade networkThread(window, mRunCount == 0); // Start the socket server { LOG(LogDebug) << "[MainRunner] Launching Command thread"; } CommandThread commandThread(systemManager); @@ -212,6 +213,7 @@ MainRunner::ExitState MainRunner::Run() // Main SDL loop exitState = MainLoop(window, systemManager, fileNotifier, mSyncMessageFactory); + GuiScraperRun::Abort(); ResetExitState(); fileNotifier.ResetEventNotifier(); DeleteReadyFlagFile(); diff --git a/projects/frontend/es-app/src/Upgrade.cpp b/projects/frontend/es-app/src/Upgrade.cpp index e3ed67e5435054553da8f739ae8d98f7dcaf43f9..f40d768aa5227e4aba85226b664205a6fa5029cf 100755 --- a/projects/frontend/es-app/src/Upgrade.cpp +++ b/projects/frontend/es-app/src/Upgrade.cpp @@ -13,8 +13,6 @@ #include "RecalboxConf.h" #include "utils/locale/LocaleHelper.h" #include "recalbox/RecalboxSystem.h" -#include "guis/GuiMsgBox.h" -#include "guis/GuiMsgBoxScroll.h" #include "guis/GuiUpdateRecalbox.h" #include #include @@ -25,9 +23,12 @@ String Upgrade::mLocalVersion; String Upgrade::mRemoteReleaseNote; String Upgrade::mLocalReleaseNote; -Upgrade::Upgrade(WindowManager& window) +Upgrade::UpdatePopup* Upgrade::UpdatePopup::mInstance = nullptr; + +Upgrade::Upgrade(WindowManager& window, bool firstRun) : mWindow(window) , mSender(*this) + , mFirstRun(firstRun) { Thread::Start("Upgrade"); } @@ -46,7 +47,7 @@ void Upgrade::Run() PatronInfo::Instance().WaitForAuthentication(*this); // First check at 15s - int waitForSeconds = 15; + int waitForSeconds = mFirstRun ? 15 : 3600; while (IsRunning()) { if (mSignal.WaitSignal(waitForSeconds * 1000LL)) return; @@ -120,13 +121,7 @@ void Upgrade::ReceiveSyncMessage() // Messagebox if (!mMessageBoxMessage.empty()) - { - //mWindow.displayScrollMessage(_("AN UPDATE IS AVAILABLE FOR YOUR RECALBOX"), mMessageBoxMessage, false); - Gui* gui = new GuiMsgBoxScroll(mWindow, _("AN UPDATE IS AVAILABLE FOR YOUR RECALBOX"), mMessageBoxMessage, _("LATER"), nullptr, _("UPDATE NOW"), - [this] { mWindow.pushGui(new GuiUpdateRecalbox(mWindow, TarUrl(), ImageUrl(), HashUrl(), NewVersion())); }, - String::Empty, nullptr, TextAlignment::Left); - mWindow.pushGui(gui); - } + UpdatePopup::Show(&mWindow, mMessageBoxMessage); } String Upgrade::GetDomainName() diff --git a/projects/frontend/es-app/src/Upgrade.h b/projects/frontend/es-app/src/Upgrade.h index 2b9e41ce6f392684ad6b6542f57228e5fa4748ef..0423f1eb3ba5e24da164ac00597364d69d25f0be 100644 --- a/projects/frontend/es-app/src/Upgrade.h +++ b/projects/frontend/es-app/src/Upgrade.h @@ -4,6 +4,10 @@ #include #include #include +#include +#include +#include +#include "utils/locale/LocaleHelper.h" // Forward declaration class WindowManager; @@ -24,8 +28,9 @@ class Upgrade: private Thread /*! * @brief Constructor * @param window main Window + * @param firstRun True if the front end just lauched, false otherwise */ - explicit Upgrade(WindowManager& window); + explicit Upgrade(WindowManager& window, bool firstRun); /*! * @brief Destructor @@ -90,6 +95,38 @@ class Upgrade: private Thread static bool NetworkReady() { return !GetDomainName().empty(); } private: + class UpdatePopup : public GuiMsgBoxScroll + { + public: + //! Build & show the popup if it does not already exists + static void Show(WindowManager* window, const String& message) + { + if (mInstance == nullptr) + { + mInstance = new UpdatePopup(window, message); + window->pushGui(mInstance); + } + } + + /// Destructor - remove unique instance + ~UpdatePopup() { mInstance = nullptr; } + + private: + //! Static unitary instance + static UpdatePopup* mInstance; + + //! Launch update window + static void LaunchUpdate(WindowManager* window) + { + window->pushGui(new GuiUpdateRecalbox(*window, TarUrl(), ImageUrl(), HashUrl(), NewVersion())); + } + + //! Default constructor + UpdatePopup(WindowManager* window, const String& message) + : GuiMsgBoxScroll(*window, _("AN UPDATE IS AVAILABLE FOR YOUR RECALBOX"), message, _("LATER"), nullptr, _("UPDATE NOW"), + std::bind(UpdatePopup::LaunchUpdate, window), String::Empty, nullptr, TextAlignment::Left) {} + }; + //! Release DNS static constexpr const char* sUpgradeDNS = ".download.recalbox.com"; @@ -121,6 +158,8 @@ class Upgrade: private Thread static String mRemoteReleaseNote; //! Local version static String mLocalReleaseNote; + //! First run? + bool mFirstRun; /* * Thread implementation diff --git a/projects/frontend/es-app/src/guis/GuiScraperRun.cpp b/projects/frontend/es-app/src/guis/GuiScraperRun.cpp index 1ac42df781d9b5e376d1a14998b8d1c809d32c0b..4ad79bf6075ef7471be0215a6b4f1b4f83ae4b16 100644 --- a/projects/frontend/es-app/src/guis/GuiScraperRun.cpp +++ b/projects/frontend/es-app/src/guis/GuiScraperRun.cpp @@ -43,10 +43,22 @@ void GuiScraperRun::Hide(WindowManager& window) } } -void GuiScraperRun::Terminate() +void GuiScraperRun::Abort() { if (sInstance != nullptr) + { + sInstance->TerminateScraping(); + TerminateGui(); + } +} + +void GuiScraperRun::TerminateGui() +{ + if (sInstance != nullptr) + { + Show(sInstance->mWindow); sInstance->Close(); + } sInstance = nullptr; } @@ -109,7 +121,8 @@ GuiScraperRun::GuiScraperRun(WindowManager& window, SystemManager& systemManager std::vector> buttons { - mButton = std::make_shared(mWindow, _("STOP"), _("stop (progress saved)"), std::bind(&GuiScraperRun::finish, this)), + mButton = std::make_shared(mWindow, _("STOP"), _("stop (progress saved)"), std::bind( + &GuiScraperRun::TerminateScraping, this)), mRunInBgButton = std::make_shared(mWindow, _("RUN IN BACKGROUND"), _("RUN IN BACKGROUND"), [this] { GuiScraperRun::Hide(mWindow); }) }; mButtonGrid = MenuComponent::MakeButtonGrid(mWindow, buttons); @@ -143,12 +156,11 @@ void GuiScraperRun::onSizeChanged() mGrid.setSize(mSize); } -void GuiScraperRun::finish() +void GuiScraperRun::TerminateScraping() { mScraper->Abort(true); - Terminate(); - for(const auto& systemData : mSearchQueue) - systemData->UpdateGamelistXml(); + TerminateGui(); + mSystemManager.UpdateAllGameLists(); mWindow.CloseAll(); /*switch(mResult) { @@ -320,7 +332,7 @@ void GuiScraperRun::ScrapingComplete(ScrapeResult reason, MetadataType changedMe if (mWindow.InfoPopupIsShown(&mPopup) || mLowResolution) { String text = mLowResolution ? _("Your scraping session completed!") : _("Your scraping session completed. Press OK to show the results."); - GuiMsgBox* msgBox = new GuiMsgBox(mWindow, text, _("OK"), [this] { if (mLowResolution) Terminate(); else Show(mWindow); mButtonGrid->resetCursor(); }); + GuiMsgBox* msgBox = new GuiMsgBox(mWindow, text, _("OK"), [this] { if (mLowResolution) TerminateGui(); else Show(mWindow); mButtonGrid->resetCursor(); }); mWindow.pushGui(msgBox); } } diff --git a/projects/frontend/es-app/src/guis/GuiScraperRun.h b/projects/frontend/es-app/src/guis/GuiScraperRun.h index 6160c578064464bc5edc05023e4f7ca29801d718..a7cc727040205f6e6f23b95679d886a8c77d1342 100644 --- a/projects/frontend/es-app/src/guis/GuiScraperRun.h +++ b/projects/frontend/es-app/src/guis/GuiScraperRun.h @@ -8,6 +8,7 @@ #include #include "components/ProgressBarComponent.h" #include +#include class ScraperSearchComponent; class TextComponent; @@ -45,10 +46,15 @@ class GuiScraperRun : public Gui static bool IsRunning() { return sInstance != nullptr; } /*! - * @brief Terminate the running instance + * @brief Abort scraping immediately + */ + static void Abort(); + + /*! + * @brief TerminateGui the running instance * @param window Window manager */ - static void Terminate(); + static void TerminateGui(); //! Destructor ~GuiScraperRun() override = default; @@ -67,7 +73,7 @@ class GuiScraperRun : public Gui */ GuiScraperRun(WindowManager& window, SystemManager& systemManager, const SystemManager::List& systems, ScrapingMethod method, IScraperEngineFreezer* freezer, bool lowResolution); - void finish(); + void TerminateScraping(); //! Instance static GuiScraperRun* sInstance; diff --git a/projects/frontend/es-app/src/views/gamelist/DetailedGameListView.cpp b/projects/frontend/es-app/src/views/gamelist/DetailedGameListView.cpp index d2609925d3d0077ba3b5dc3676fadca3fe3d43e9..efeb6eb0e6c5d8d619928dde70dcfc8b2224f5c1 100755 --- a/projects/frontend/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/projects/frontend/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -4,6 +4,7 @@ #include "animations/LambdaAnimation.h" #include "scraping/ScraperSeamless.h" #include "recalbox/RecalboxStorageWatcher.h" +#include "guis/GuiScraperRun.h" DetailedGameListView::DetailedGameListView(WindowManager&window, SystemManager& systemManager, SystemData& system, const IGlobalVariableResolver& resolver, FlagCaches& flagCache) : ISimpleGameListView(window, systemManager, system, resolver, flagCache) @@ -597,7 +598,7 @@ void DetailedGameListView::Update(int deltatime) if (mList.isScrolling()) mVideo.setVideo(Path::Empty); - if (!mSystem.IsScreenshots()) + if (!mSystem.IsScreenshots() && !GuiScraperRun::IsRunning()) { // Need busy animation? ScraperSeamless& scraper = ScraperSeamless::Instance(); diff --git a/projects/recalbox-rgb-dual/recalboxrgbdual.c b/projects/recalbox-rgb-dual/recalboxrgbdual.c index 8adc78d68def8b8422b7ffaaa7c1385413f935c3..edc61ae5499d36608f398b9e20c0e73533cd0093 100644 --- a/projects/recalbox-rgb-dual/recalboxrgbdual.c +++ b/projects/recalbox-rgb-dual/recalboxrgbdual.c @@ -14,6 +14,7 @@ #include #include #include +#include #include