From 0b45a5a11a95a702ecbbfc27f449f2b80c6c8c55 Mon Sep 17 00:00:00 2001 From: Kostas Missos Date: Sat, 7 Dec 2019 02:01:29 +0200 Subject: [PATCH] bpmp: Reduce freq to 589MHz 3 users had issues with 602MHz. This will probably bring the SoC binning compatibility to 100%. Additionally, make it easy to change default boost frequency. The tiny loss in perf, will be mitigated in Nyx. (It's actually even faster) --- bootloader/main.c | 2 +- bootloader/sec/tsec.c | 2 +- bootloader/soc/bpmp.c | 9 +++++---- bootloader/soc/bpmp.h | 9 ++++++--- nyx/nyx_gui/nyx.c | 2 +- nyx/nyx_gui/sec/tsec.c | 2 +- nyx/nyx_gui/soc/bpmp.c | 9 +++++---- nyx/nyx_gui/soc/bpmp.h | 9 ++++++--- 8 files changed, 26 insertions(+), 18 deletions(-) diff --git a/bootloader/main.c b/bootloader/main.c index 9d8a880..0992c7a 100644 --- a/bootloader/main.c +++ b/bootloader/main.c @@ -1282,7 +1282,7 @@ void ipl_main() //display_backlight_brightness(h_cfg.backlight, 1000); // Overclock BPMP. - bpmp_clk_rate_set(BPMP_CLK_SUPER_BOOST); + bpmp_clk_rate_set(BPMP_CLK_DEFAULT_BOOST); // Check if we had a panic while in CFW. secmon_exo_check_panic(); diff --git a/bootloader/sec/tsec.c b/bootloader/sec/tsec.c index 09e1120..7c9f1e6 100644 --- a/bootloader/sec/tsec.c +++ b/bootloader/sec/tsec.c @@ -282,7 +282,7 @@ out:; clock_disable_sor_safe(); clock_disable_tsec(); bpmp_mmu_enable(); - bpmp_clk_rate_set(BPMP_CLK_SUPER_BOOST); + bpmp_clk_rate_set(BPMP_CLK_DEFAULT_BOOST); return res; } diff --git a/bootloader/soc/bpmp.c b/bootloader/soc/bpmp.c index 6522b7e..c68f903 100644 --- a/bootloader/soc/bpmp.c +++ b/bootloader/soc/bpmp.c @@ -155,10 +155,11 @@ void bpmp_mmu_disable() const u8 pllc4_divn[] = { 0, // BPMP_CLK_NORMAL: 408MHz 0% - 136MHz APB. - 85, // BPMP_CLK_LOW_BOOST: 544MHz 33% - 136MHz APB. - 90, // BPMP_CLK_MID_BOOST: 576MHz 41% - 144MHz APB. - 94 // BPMP_CLK_SUPER_BOOST: 602MHz 48% - 150MHz APB. - //95 // BPMP_CLK_SUPER_BOOST: 608MHz 49% - 152MHz APB. + 85, // BPMP_CLK_HIGH_BOOST: 544MHz 33% - 136MHz APB. + 90, // BPMP_CLK_SUPER_BOOST: 576MHz 41% - 144MHz APB. + 92 // BPMP_CLK_HYPER_BOOST: 589MHz 44% - 147MHz APB. + // Do not use for public releases! + //95 // BPMP_CLK_DEV_BOOST: 608MHz 49% - 152MHz APB. }; bpmp_freq_t bpmp_clock_set = BPMP_CLK_NORMAL; diff --git a/bootloader/soc/bpmp.h b/bootloader/soc/bpmp.h index d85252f..4c1155e 100644 --- a/bootloader/soc/bpmp.h +++ b/bootloader/soc/bpmp.h @@ -36,12 +36,15 @@ typedef struct _bpmp_mmu_entry_t typedef enum { BPMP_CLK_NORMAL, // 408MHz 0% - 136MHz APB. - BPMP_CLK_LOW_BOOST, // 544MHz 33% - 136MHz APB. - BPMP_CLK_MID_BOOST, // 576MHz 41% - 144MHz APB. - BPMP_CLK_SUPER_BOOST, // 608MHz 49% - 152MHz APB. + BPMP_CLK_HIGH_BOOST, // 544MHz 33% - 136MHz APB. + BPMP_CLK_SUPER_BOOST, // 576MHz 41% - 144MHz APB. + BPMP_CLK_HYPER_BOOST, // 589MHz 44% - 147MHz APB. + //BPMP_CLK_DEV_BOOST, // 608MHz 49% - 152MHz APB. BPMP_CLK_MAX } bpmp_freq_t; +#define BPMP_CLK_DEFAULT_BOOST BPMP_CLK_HYPER_BOOST + void bpmp_mmu_maintenance(u32 op, bool force); void bpmp_mmu_set_entry(int idx, bpmp_mmu_entry_t *entry, bool apply); void bpmp_mmu_enable(); diff --git a/nyx/nyx_gui/nyx.c b/nyx/nyx_gui/nyx.c index 4b2ba69..bce3992 100644 --- a/nyx/nyx_gui/nyx.c +++ b/nyx/nyx_gui/nyx.c @@ -364,7 +364,7 @@ void load_saved_configuration() void nyx_init_load_res() { bpmp_mmu_enable(); - bpmp_clk_rate_set(BPMP_CLK_SUPER_BOOST); + bpmp_clk_rate_set(BPMP_CLK_DEFAULT_BOOST); // Set bootloader's default configuration. set_default_configuration(); diff --git a/nyx/nyx_gui/sec/tsec.c b/nyx/nyx_gui/sec/tsec.c index 09e1120..7c9f1e6 100644 --- a/nyx/nyx_gui/sec/tsec.c +++ b/nyx/nyx_gui/sec/tsec.c @@ -282,7 +282,7 @@ out:; clock_disable_sor_safe(); clock_disable_tsec(); bpmp_mmu_enable(); - bpmp_clk_rate_set(BPMP_CLK_SUPER_BOOST); + bpmp_clk_rate_set(BPMP_CLK_DEFAULT_BOOST); return res; } diff --git a/nyx/nyx_gui/soc/bpmp.c b/nyx/nyx_gui/soc/bpmp.c index bdda136..f73d511 100644 --- a/nyx/nyx_gui/soc/bpmp.c +++ b/nyx/nyx_gui/soc/bpmp.c @@ -158,10 +158,11 @@ void bpmp_mmu_disable() const u8 pllc4_divn[] = { 0, // BPMP_CLK_NORMAL: 408MHz 0% - 136MHz APB. - 85, // BPMP_CLK_LOW_BOOST: 544MHz 33% - 136MHz APB. - 90, // BPMP_CLK_MID_BOOST: 576MHz 41% - 144MHz APB. - 94 // BPMP_CLK_SUPER_BOOST: 602MHz 48% - 150MHz APB. - //95 // BPMP_CLK_SUPER_BOOST: 608MHz 49% - 152MHz APB. + 85, // BPMP_CLK_HIGH_BOOST: 544MHz 33% - 136MHz APB. + 90, // BPMP_CLK_SUPER_BOOST: 576MHz 41% - 144MHz APB. + 92 // BPMP_CLK_HYPER_BOOST: 589MHz 44% - 147MHz APB. + // Do not use for public releases! + //95 // BPMP_CLK_DEV_BOOST: 608MHz 49% - 152MHz APB. }; bpmp_freq_t bpmp_clock_set = BPMP_CLK_NORMAL; diff --git a/nyx/nyx_gui/soc/bpmp.h b/nyx/nyx_gui/soc/bpmp.h index d85252f..4c1155e 100644 --- a/nyx/nyx_gui/soc/bpmp.h +++ b/nyx/nyx_gui/soc/bpmp.h @@ -36,12 +36,15 @@ typedef struct _bpmp_mmu_entry_t typedef enum { BPMP_CLK_NORMAL, // 408MHz 0% - 136MHz APB. - BPMP_CLK_LOW_BOOST, // 544MHz 33% - 136MHz APB. - BPMP_CLK_MID_BOOST, // 576MHz 41% - 144MHz APB. - BPMP_CLK_SUPER_BOOST, // 608MHz 49% - 152MHz APB. + BPMP_CLK_HIGH_BOOST, // 544MHz 33% - 136MHz APB. + BPMP_CLK_SUPER_BOOST, // 576MHz 41% - 144MHz APB. + BPMP_CLK_HYPER_BOOST, // 589MHz 44% - 147MHz APB. + //BPMP_CLK_DEV_BOOST, // 608MHz 49% - 152MHz APB. BPMP_CLK_MAX } bpmp_freq_t; +#define BPMP_CLK_DEFAULT_BOOST BPMP_CLK_HYPER_BOOST + void bpmp_mmu_maintenance(u32 op, bool force); void bpmp_mmu_set_entry(int idx, bpmp_mmu_entry_t *entry, bool apply); void bpmp_mmu_enable();