diff --git a/Makefile b/Makefile index 5cc886c..189c52c 100755 --- a/Makefile +++ b/Makefile @@ -2,9 +2,7 @@ ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") endif -CC = $(DEVKITARM)/bin/arm-none-eabi-gcc -LD = $(DEVKITARM)/bin/arm-none-eabi-ld -OBJCOPY = $(DEVKITARM)/bin/arm-none-eabi-objcopy +include $(DEVKITARM)/base_rules TARGET := ipl BUILD := build_ipl @@ -44,7 +42,7 @@ OBJS = $(addprefix $(BUILD)/, \ OBJS += $(addprefix $(BUILD)/, diskio.o ff.o ffunicode.o) ARCH := -march=armv4t -mtune=arm7tdmi -mthumb -mthumb-interwork -CFLAGS = $(ARCH) -O2 -nostdlib -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-inline -std=gnu11# -Wall +CFLAGS = $(ARCH) -O2 -nostdlib -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-inline -std=gnu11 -Wall LDFLAGS = $(ARCH) -nostartfiles -lgcc -Wl,--nmagic,--gc-sections .PHONY: all clean diff --git a/ipl/clock.c b/ipl/clock.c index c959749..efa6ea3 100755 --- a/ipl/clock.c +++ b/ipl/clock.c @@ -51,14 +51,14 @@ static clock_t _clock_coresight = { 0xC, 0x18, 0x1D4, 9, 0, 4}; void clock_enable(const clock_t *clk) { //Put clock into reset. - CLOCK(clk->reset) = CLOCK(clk->reset) & ~(1 << clk->index) | (1 << clk->index); + CLOCK(clk->reset) = (CLOCK(clk->reset) & ~(1 << clk->index)) | (1 << clk->index); //Disable. CLOCK(clk->enable) &= ~(1 << clk->index); //Configure clock source if required. if (clk->source) CLOCK(clk->source) = clk->clk_div | (clk->clk_src << 29); //Enable. - CLOCK(clk->enable) = CLOCK(clk->enable) & ~(1 << clk->index) | (1 << clk->index); + CLOCK(clk->enable) = (CLOCK(clk->enable) & ~(1 << clk->index)) | (1 << clk->index); //Take clock off reset. CLOCK(clk->reset) &= ~(1 << clk->index); } @@ -66,14 +66,14 @@ void clock_enable(const clock_t *clk) void clock_disable(const clock_t *clk) { //Put clock into reset. - CLOCK(clk->reset) = CLOCK(clk->reset) & ~(1 << clk->index) | (1 << clk->index); + CLOCK(clk->reset) = (CLOCK(clk->reset) & ~(1 << clk->index)) | (1 << clk->index); //Disable. CLOCK(clk->enable) &= ~(1 << clk->index); } void clock_enable_fuse(u32 enable) { - CLOCK(CLK_RST_CONTROLLER_MISC_CLK_ENB) = CLOCK(CLK_RST_CONTROLLER_MISC_CLK_ENB) & 0xEFFFFFFF | ((enable & 1) << 28) & 0x10000000; + CLOCK(CLK_RST_CONTROLLER_MISC_CLK_ENB) = (CLOCK(CLK_RST_CONTROLLER_MISC_CLK_ENB) & 0xEFFFFFFF) | ((enable & 1) << 28); } void clock_enable_uart(u32 idx) @@ -144,9 +144,9 @@ void clock_disable_sor1() void clock_enable_kfuse() { //clock_enable(&_clock_kfuse); - CLOCK(0x8) = CLOCK(0x8) & 0xFFFFFEFF | 0x100; + CLOCK(0x8) = (CLOCK(0x8) & 0xFFFFFEFF) | 0x100; CLOCK(0x14) &= 0xFFFFFEFF; - CLOCK(0x14) = CLOCK(0x14) & 0xFFFFFEFF | 0x100; + CLOCK(0x14) = (CLOCK(0x14) & 0xFFFFFEFF) | 0x100; sleep(10); CLOCK(0x8) &= 0xFFFFFEFF; sleep(20); @@ -259,7 +259,7 @@ static int _clock_sdmmc_is_enabled(u32 id) return 0; } -static int _clock_sdmmc_set_enable(u32 id) +static void _clock_sdmmc_set_enable(u32 id) { switch (id) { @@ -274,7 +274,7 @@ static int _clock_sdmmc_set_enable(u32 id) } } -static int _clock_sdmmc_clear_enable(u32 id) +static void _clock_sdmmc_clear_enable(u32 id) { switch (id) { diff --git a/ipl/cluster.c b/ipl/cluster.c index dcb1e2e..f88615e 100755 --- a/ipl/cluster.c +++ b/ipl/cluster.c @@ -77,15 +77,15 @@ void cluster_boot_cpu0(u32 entry) sleep(2); CLOCK(CLK_RST_CONTROLLER_PLLX_BASE) = 0x80404E02; CLOCK(CLK_RST_CONTROLLER_PLLX_BASE) = 0x404E02; - CLOCK(CLK_RST_CONTROLLER_PLLX_MISC) = CLOCK(CLK_RST_CONTROLLER_PLLX_MISC) & 0xFFFBFFFF | 0x40000; + CLOCK(CLK_RST_CONTROLLER_PLLX_MISC) = (CLOCK(CLK_RST_CONTROLLER_PLLX_MISC) & 0xFFFBFFFF) | 0x40000; CLOCK(CLK_RST_CONTROLLER_PLLX_BASE) = 0x40404E02; } while (!(CLOCK(CLK_RST_CONTROLLER_PLLX_BASE) & 0x8000000)) ; //Configure MSELECT source and enable clock. - CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_MSELECT) = CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_MSELECT) & 0x1FFFFF00 | 6; - CLOCK(CLK_RST_CONTROLLER_CLK_OUT_ENB_V) = CLOCK(CLK_RST_CONTROLLER_CLK_OUT_ENB_V) & 0xFFFFFFF7 | 8; + CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_MSELECT) = (CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_MSELECT) & 0x1FFFFF00) | 6; + CLOCK(CLK_RST_CONTROLLER_CLK_OUT_ENB_V) = (CLOCK(CLK_RST_CONTROLLER_CLK_OUT_ENB_V) & 0xFFFFFFF7) | 8; //Configure initial CPU clock frequency and enable clock. CLOCK(CLK_RST_CONTROLLER_CCLK_BURST_POLICY) = 0x20008888; @@ -95,7 +95,7 @@ void cluster_boot_cpu0(u32 entry) clock_enable_coresight(); //CAR2PMC_CPU_ACK_WIDTH should be set to 0. - CLOCK(CLK_RST_CONTROLLER_CPU_SOFTRST_CTRL2) = CLOCK(CLK_RST_CONTROLLER_CPU_SOFTRST_CTRL2) & 0xFFFFF000; + CLOCK(CLK_RST_CONTROLLER_CPU_SOFTRST_CTRL2) &= 0xFFFFF000; //Enable CPU rail. _cluster_pmc_enable_partition(1, 0); diff --git a/ipl/di.c b/ipl/di.c index f66127d..511bc55 100755 --- a/ipl/di.c +++ b/ipl/di.c @@ -62,19 +62,19 @@ void display_init() PINMUX_AUX(0x200) &= 0xFFFFFFEF; PINMUX_AUX(0x204) &= 0xFFFFFFEF; - GPIO_3(0x00) = GPIO_3(0x00) & 0xFFFFFFFC | 0x3; - GPIO_3(0x10) = GPIO_3(0x10) & 0xFFFFFFFC | 0x3; - GPIO_3(0x20) = GPIO_3(0x20) & 0xFFFFFFFE | 0x1; + GPIO_3(0x00) = (GPIO_3(0x00) & 0xFFFFFFFC) | 0x3; + GPIO_3(0x10) = (GPIO_3(0x10) & 0xFFFFFFFC) | 0x3; + GPIO_3(0x20) = (GPIO_3(0x20) & 0xFFFFFFFE) | 0x1; sleep(10000u); - GPIO_3(0x20) = GPIO_3(0x20) & 0xFFFFFFFD | 0x2; + GPIO_3(0x20) = (GPIO_3(0x20) & 0xFFFFFFFD) | 0x2; sleep(10000); - GPIO_6(0x04) = GPIO_6(0x04) & 0xFFFFFFF8 | 0x7; - GPIO_6(0x14) = GPIO_6(0x14) & 0xFFFFFFF8 | 0x7; - GPIO_6(0x24) = GPIO_6(0x24) & 0xFFFFFFFD | 0x2; + GPIO_6(0x04) = (GPIO_6(0x04) & 0xFFFFFFF8) | 0x7; + GPIO_6(0x14) = (GPIO_6(0x14) & 0xFFFFFFF8) | 0x7; + GPIO_6(0x24) = (GPIO_6(0x24) & 0xFFFFFFFD) | 0x2; //Config display interface and display. MIPI_CAL(0x60) = 0; @@ -85,7 +85,7 @@ void display_init() sleep(10000); - GPIO_6(0x24) = GPIO_6(0x24) & 0xFFFFFFFB | 0x4; + GPIO_6(0x24) = (GPIO_6(0x24) & 0xFFFFFFFB) | 0x4; sleep(60000); @@ -187,7 +187,7 @@ void display_end() GPIO_6(0x04) &= 0xFFFFFFFE; - PINMUX_AUX(0x1FC) = PINMUX_AUX(0x1FC) & 0xFFFFFFEF | 0x10; + PINMUX_AUX(0x1FC) = (PINMUX_AUX(0x1FC) & 0xFFFFFFEF) | 0x10; PINMUX_AUX(0x1FC) = (PINMUX_AUX(0x1FC) >> 2) << 2 | 1; } @@ -200,7 +200,7 @@ void display_color_screen(u32 color) DISPLAY_A(_DIREG(DC_WIN_BD_WIN_OPTIONS)) = 0; DISPLAY_A(_DIREG(DC_WIN_CD_WIN_OPTIONS)) = 0; DISPLAY_A(_DIREG(DC_DISP_BLEND_BACKGROUND_COLOR)) = color; - DISPLAY_A(_DIREG(DC_CMD_STATE_CONTROL)) = DISPLAY_A(_DIREG(DC_CMD_STATE_CONTROL)) & 0xFFFFFFFE | GENERAL_ACT_REQ; + DISPLAY_A(_DIREG(DC_CMD_STATE_CONTROL)) = (DISPLAY_A(_DIREG(DC_CMD_STATE_CONTROL)) & 0xFFFFFFFE) | GENERAL_ACT_REQ; sleep(35000); diff --git a/ipl/gfx.c b/ipl/gfx.c index 350323a..3c67be1 100755 --- a/ipl/gfx.c +++ b/ipl/gfx.c @@ -287,7 +287,7 @@ void gfx_hexdump(gfx_con_t *con, u32 base, const u8 *buf, u32 len) u32 k = 0x10 - 1; if (ln) { - k = len & 0xF - 1; + k = (len & 0xF) - 1; for (u32 j = 0; j < 0x10 - k; j++) gfx_puts(con, " "); } diff --git a/ipl/hos.c b/ipl/hos.c index 8c1dab9..4b454e1 100755 --- a/ipl/hos.c +++ b/ipl/hos.c @@ -184,6 +184,8 @@ int keygen(u8 *keyblob, u32 kb, void *tsec_fw) // Package2 key se_key_acc_ctrl(0x08, 0x15); se_aes_unwrap_key(0x08, 0x0C, key8_keyseed); + + return 1; } @@ -207,8 +209,8 @@ typedef struct _launch_ctxt_t u32 kernel_size; link_t kip1_list; - u8 *svcperm; - u8 *debugmode; + int svcperm; + int debugmode; } launch_ctxt_t; typedef struct _merge_kip_t @@ -345,9 +347,9 @@ static int _config_svcperm(launch_ctxt_t *ctxt, const char *value) if (*(u8 *)value == '1') { DPRINTF("Disabled SVC verification\n"); - ctxt->svcperm = malloc(1); + ctxt->svcperm = 1; } - + return 1; } @@ -356,8 +358,10 @@ static int _config_debugmode(launch_ctxt_t *ctxt, const char *value) if (*(u8 *)value == '1') { DPRINTF("Enabled Debug mode\n"); - ctxt->debugmode = malloc(1); + ctxt->debugmode = 1; } + + return 1; } typedef struct _cfg_handler_t diff --git a/ipl/i2c.c b/ipl/i2c.c index cad793f..6d6c1c2 100755 --- a/ipl/i2c.c +++ b/ipl/i2c.c @@ -46,7 +46,7 @@ static int _i2c_send_pkt(u32 idx, u32 x, u8 *buf, u32 size) base[0] = (2 * size - 2) | 0x2800; //Set size and send mode. _i2c_wait(base); //Kick transaction. - base[0] = base[0] & 0xFFFFFDFF | 0x200; + base[0] = (base[0] & 0xFFFFFDFF) | 0x200; while (base[7] & 0x100) ; @@ -66,7 +66,7 @@ static int _i2c_recv_pkt(u32 idx, u8 *buf, u32 size, u32 x) base[0] = (2 * size - 2) | 0x2840; //Set size and recv mode. _i2c_wait(base); //Kick transaction. - base[0] = base[0] & 0xFFFFFDFF | 0x200; + base[0] = (base[0] & 0xFFFFFDFF) | 0x200; while (base[7] & 0x100) ; @@ -94,11 +94,11 @@ void i2c_init(u32 idx) break; } - vu32 dummy = base[0x22]; + (vu32)base[0x22]; base[0x1A] = base[0x1A]; } -u32 i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size) +int i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size) { u8 tmp[4]; @@ -108,7 +108,7 @@ u32 i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size) tmp[0] = y; memcpy(tmp + 1, buf, size); - _i2c_send_pkt(idx, x, tmp, size + 1); + return _i2c_send_pkt(idx, x, tmp, size + 1); } int i2c_recv_buf_small(u8 *buf, u32 size, u32 idx, u32 x, u32 y) @@ -119,9 +119,9 @@ int i2c_recv_buf_small(u8 *buf, u32 size, u32 idx, u32 x, u32 y) return res; } -u32 i2c_send_byte(u32 idx, u32 x, u32 y, u8 b) +int i2c_send_byte(u32 idx, u32 x, u32 y, u8 b) { - i2c_send_buf_small(idx, x, y, &b, 1); + return i2c_send_buf_small(idx, x, y, &b, 1); } u8 i2c_recv_byte(u32 idx, u32 x, u32 y) diff --git a/ipl/i2c.h b/ipl/i2c.h index 84a4240..699bc48 100755 --- a/ipl/i2c.h +++ b/ipl/i2c.h @@ -27,9 +27,9 @@ #define I2C_6 5 void i2c_init(u32 idx); -u32 i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size); +int i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size); int i2c_recv_buf_small(u8 *buf, u32 size, u32 idx, u32 x, u32 y); -u32 i2c_send_byte(u32 idx, u32 x, u32 y, u8 b); +int i2c_send_byte(u32 idx, u32 x, u32 y, u8 b); u8 i2c_recv_byte(u32 idx, u32 x, u32 y); #endif diff --git a/ipl/main.c b/ipl/main.c index 486f85b..c0966f8 100755 --- a/ipl/main.c +++ b/ipl/main.c @@ -156,17 +156,17 @@ void panic(u32 val) void config_oscillators() { - CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) = CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) & 0xFFFFFFF3 | 4; + CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) = (CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) & 0xFFFFFFF3) | 4; SYSCTR0(SYSCTR0_CNTFID0) = 19200000; TMR(0x14) = 0x45F; CLOCK(CLK_RST_CONTROLLER_OSC_CTRL) = 0x50000071; - PMC(APBDEV_PMC_OSC_EDPD_OVER) = PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFFFFF81 | 0xE; - PMC(APBDEV_PMC_OSC_EDPD_OVER) = PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFBFFFFF | 0x400000; - PMC(APBDEV_PMC_CNTRL2) = PMC(APBDEV_PMC_CNTRL2) & 0xFFFFEFFF | 0x1000; - PMC(APBDEV_PMC_SCRATCH188) = PMC(APBDEV_PMC_SCRATCH188) & 0xFCFFFFFF | 0x2000000; + PMC(APBDEV_PMC_OSC_EDPD_OVER) = (PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFFFFF81) | 0xE; + PMC(APBDEV_PMC_OSC_EDPD_OVER) = (PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFBFFFFF) | 0x400000; + PMC(APBDEV_PMC_CNTRL2) = (PMC(APBDEV_PMC_CNTRL2) & 0xFFFFEFFF) | 0x1000; + PMC(APBDEV_PMC_SCRATCH188) = (PMC(APBDEV_PMC_SCRATCH188) & 0xFCFFFFFF) | 0x2000000; CLOCK(CLK_RST_CONTROLLER_CLK_SYSTEM_RATE) = 0x10; CLOCK(CLK_RST_CONTROLLER_PLLMB_BASE) &= 0xBFFFFFFF; - PMC(APBDEV_PMC_TSC_MULT) = PMC(APBDEV_PMC_TSC_MULT) & 0xFFFF0000 | 0x249F; //0x249F = 19200000 * (16 / 32.768 kHz) + PMC(APBDEV_PMC_TSC_MULT) = (PMC(APBDEV_PMC_TSC_MULT) & 0xFFFF0000) | 0x249F; //0x249F = 19200000 * (16 / 32.768 kHz) CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) = 0x20004444; CLOCK(CLK_RST_CONTROLLER_SUPER_SCLK_DIVIDER) = 0x80000000; CLOCK(CLK_RST_CONTROLLER_CLK_SYSTEM_RATE) = 2; @@ -247,9 +247,9 @@ void mbist_workaround() CLOCK(0x554) = 0; CLOCK(0xD0) &= 0x1F7FFFFF; CLOCK(0x410) &= 0xFFFF3FFF; - CLOCK(0x148) = CLOCK(0x148) & 0x1FFFFFFF | 0x80000000; - CLOCK(0x180) = CLOCK(0x180) & 0x1FFFFFFF | 0x80000000; - CLOCK(0x6A0) = CLOCK(0x6A0) & 0x1FFFFFFF | 0x80000000; + CLOCK(0x148) = (CLOCK(0x148) & 0x1FFFFFFF) | 0x80000000; + CLOCK(0x180) = (CLOCK(0x180) & 0x1FFFFFFF) | 0x80000000; + CLOCK(0x6A0) = (CLOCK(0x6A0) & 0x1FFFFFFF) | 0x80000000; } void config_se_brom() @@ -325,7 +325,7 @@ void config_hw() config_pmc_scratch(); - CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) = CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) & 0xFFFF8888 | 0x3333; + CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) = (CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) & 0xFFFF8888) | 0x3333; mc_config_carveout(); @@ -1266,7 +1266,6 @@ void launch_firmware() //TODO: free ini. -out:; btn_wait(); } diff --git a/ipl/mc.c b/ipl/mc.c index 1c8cc2a..a4cec19 100755 --- a/ipl/mc.c +++ b/ipl/mc.c @@ -102,7 +102,7 @@ void mc_config_carveout() void mc_enable_ahb_redirect() { - CLOCK(0x3A4) = CLOCK(0x3A4) & 0xFFF7FFFF | 0x80000; + CLOCK(0x3A4) = (CLOCK(0x3A4) & 0xFFF7FFFF) | 0x80000; //MC(MC_IRAM_REG_CTRL) &= 0xFFFFFFFE; MC(MC_IRAM_BOM) = 0x40000000; MC(MC_IRAM_TOM) = 0x4003F000; @@ -119,13 +119,13 @@ void mc_disable_ahb_redirect() void mc_enable() { - CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) = CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) & 0x1FFFFFFF | 0x40000000; + CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) = (CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) & 0x1FFFFFFF) | 0x40000000; //Enable MIPI CAL clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFDFFFFFF | 0x2000000; + CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = (CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFDFFFFFF) | 0x2000000; //Enable MC clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFFFFFFFE | 1; + CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = (CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFFFFFFFE) | 1; //Enable EMC DLL clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) & 0xFFFFBFFF | 0x4000; + CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) = (CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) & 0xFFFFBFFF) | 0x4000; CLOCK(CLK_RST_CONTROLLER_RST_DEV_H_SET) = 0x2000001; //Clear EMC and MC reset. sleep(5); diff --git a/ipl/nx_emmc.c b/ipl/nx_emmc.c index f1e837f..fd5e9c7 100755 --- a/ipl/nx_emmc.c +++ b/ipl/nx_emmc.c @@ -37,7 +37,7 @@ void nx_emmc_gpt_parse(link_t *gpt, sdmmc_storage_t *storage) //HACK for (u32 i = 0; i < 36; i++) part->name[i] = ent->name[i]; - part->name[37] = 0; + part->name[36] = 0; list_append(gpt, &part->link); } diff --git a/ipl/nx_emmc.h b/ipl/nx_emmc.h index 037a176..0b81c29 100755 --- a/ipl/nx_emmc.h +++ b/ipl/nx_emmc.h @@ -59,7 +59,7 @@ typedef struct _emmc_part_t u32 lba_start; u32 lba_end; u64 attrs; - u8 name[37]; + s8 name[37]; link_t link; } emmc_part_t; diff --git a/ipl/pkg1.c b/ipl/pkg1.c index e7da955..425a414 100755 --- a/ipl/pkg1.c +++ b/ipl/pkg1.c @@ -86,7 +86,7 @@ static const pkg1_id_t _pkg1_ids[] = { { "20170710161758", 2, 0x1A00, 0x3FE0, { 0, 1, 2 }, 0x4002D000, 0x8000D000, 1, _secmon_3_patchset }, //3.0.1 - 3.0.2 { "20170921172629", 3, 0x1800, 0x3FE0, { 1, 2, 0 }, 0x4002B000, 0x4003B000, 0, _secmon_4_patchset }, //4.0.0 - 4.1.0 { "20180220163747", 4, 0x1900, 0x3FE0, { 1, 2, 0 }, 0x4002B000, 0x4003B000, 0, _secmon_5_patchset }, //5.0.0 - 5.1.0 - { NULL, 0, 0, 0, 0 } //End. + { NULL } //End. }; diff --git a/ipl/sdmmc.c b/ipl/sdmmc.c index 7f52374..2539bc6 100755 --- a/ipl/sdmmc.c +++ b/ipl/sdmmc.c @@ -307,7 +307,7 @@ static void _mmc_storage_parse_csd(sdmmc_storage_t *storage) storage->csd.capacity = (1 + unstuff_bits(raw_csd, 62, 12)) << (unstuff_bits(raw_csd, 47, 3) + 2); } -static int _mmc_storage_parse_ext_csd(sdmmc_storage_t *storage, u8 *buf) +static void _mmc_storage_parse_ext_csd(sdmmc_storage_t *storage, u8 *buf) { storage->ext_csd.rev = buf[EXT_CSD_REV]; storage->ext_csd.ext_struct = buf[EXT_CSD_STRUCTURE]; @@ -433,9 +433,9 @@ static int _mmc_storage_enable_highspeed(sdmmc_storage_t *storage, u32 card_type return _mmc_storage_enable_HS400(storage); if (sdmmc_get_bus_width(storage->sdmmc) == SDMMC_BUS_WIDTH_8 || - sdmmc_get_bus_width(storage->sdmmc) == SDMMC_BUS_WIDTH_4 + (sdmmc_get_bus_width(storage->sdmmc) == SDMMC_BUS_WIDTH_4 && card_type & EXT_CSD_CARD_TYPE_HS200_1_8V - && (type == 4 || type == 3)) + && (type == 4 || type == 3))) return _mmc_storage_enable_HS200(storage); out:; @@ -767,12 +767,12 @@ int _sd_storage_enable_highspeed(sdmmc_storage_t *storage, u32 hs_type, u8 *buf) if (type_out != hs_type) return 0; - if (((u16)buf[0] << 8) | buf[1] < 0x320) + if ((((u16)buf[0] << 8) | buf[1]) < 0x320) { if (!_sd_storage_switch(storage, buf, 1, hs_type)) return 0; - if (type_out != buf[16] & 0xF) + if (type_out != (buf[16] & 0xF)) return 0; } diff --git a/ipl/sdmmc_driver.c b/ipl/sdmmc_driver.c index ae4e8a3..50aa0f6 100755 --- a/ipl/sdmmc_driver.c +++ b/ipl/sdmmc_driver.c @@ -129,7 +129,7 @@ static int _sdmmc_config_ven_ceata_clk(sdmmc_t *sdmmc, u32 id) static const u32 tap_values[] = { 4, 0, 3, 0 }; tap_val = tap_values[sdmmc->id]; } - sdmmc->regs->venclkctl = sdmmc->regs->venclkctl & 0xFF00FFFF | (tap_val << 16); + sdmmc->regs->venclkctl = (sdmmc->regs->venclkctl & 0xFF00FFFF) | (tap_val << 16); return 1; } @@ -624,7 +624,7 @@ static int _sdmmc_autocal_config_offset(sdmmc_t *sdmmc, u32 power) break; } - sdmmc->regs->autocalcfg = ((sdmmc->regs->autocalcfg & 0xFFFF80FF | (off_pd << 8)) >> 7 << 7) | off_pu; + sdmmc->regs->autocalcfg = (((sdmmc->regs->autocalcfg & 0xFFFF80FF) | (off_pd << 8)) >> 7 << 7) | off_pu; return 1; } diff --git a/ipl/sdram.c b/ipl/sdram.c index d8cbccb..edf89dd 100755 --- a/ipl/sdram.c +++ b/ipl/sdram.c @@ -64,7 +64,7 @@ static void _sdram_config(const sdram_params_t *params) sleep(10); break_nosleep: - CLOCK(0x19C) = (params->mc_emem_arb_misc0 >> 11) & 0x10000 | params->emc_clock_source & 0xFFFEFFFF; + CLOCK(0x19C) = ((params->mc_emem_arb_misc0 >> 11) & 0x10000) | (params->emc_clock_source & 0xFFFEFFFF); if (params->emc_clock_source_dll) CLOCK(0x664) = params->emc_clock_source_dll; if (params->clear_clock2_mc1) @@ -97,7 +97,7 @@ break_nosleep: EMC(EMC_PMACRO_BRICK_MAPPING_0) = params->emc_pmacro_brick_mapping0; EMC(EMC_PMACRO_BRICK_MAPPING_1) = params->emc_pmacro_brick_mapping1; EMC(EMC_PMACRO_BRICK_MAPPING_2) = params->emc_pmacro_brick_mapping2; - EMC(EMC_PMACRO_BRICK_CTRL_RFU1) = params->emc_pmacro_brick_ctrl_rfu1 & 0x1120112 | 0x1EED1EED; + EMC(EMC_PMACRO_BRICK_CTRL_RFU1) = (params->emc_pmacro_brick_ctrl_rfu1 & 0x1120112) | 0x1EED1EED; EMC(EMC_CONFIG_SAMPLE_DELAY) = params->emc_config_sample_delay; EMC(EMC_FBIO_CFG8) = params->emc_fbio_cfg8; EMC(EMC_SWIZZLE_RANK0_BYTE0) = params->emc_swizzle_rank0_byte0; @@ -142,7 +142,7 @@ break_nosleep: EMC(EMC_QUSE_BRLSHFT_1) = params->emc_quse_brlshft1; EMC(EMC_QUSE_BRLSHFT_2) = params->emc_quse_brlshft2; EMC(EMC_QUSE_BRLSHFT_3) = params->emc_quse_brlshft3; - EMC(EMC_PMACRO_BRICK_CTRL_RFU1) = params->emc_pmacro_brick_ctrl_rfu1 & 0x1BF01BF | 0x1E401E40; + EMC(EMC_PMACRO_BRICK_CTRL_RFU1) = (params->emc_pmacro_brick_ctrl_rfu1 & 0x1BF01BF) | 0x1E401E40; EMC(EMC_PMACRO_PAD_CFG_CTRL) = params->emc_pmacro_pad_cfg_ctrl; EMC(EMC_PMACRO_CMD_BRICK_CTRL_FDPD) = params->emc_pmacro_cmd_brick_ctrl_fdpd; EMC(EMC_PMACRO_BRICK_CTRL_RFU2) = params->emc_pmacro_brick_ctrl_rfu2 & 0xFF7FFF7F; @@ -232,7 +232,7 @@ break_nosleep: EMC(EMC_PMACRO_DDLL_SHORT_CMD_0) = params->emc_pmacro_ddll_short_cmd_0; EMC(EMC_PMACRO_DDLL_SHORT_CMD_1) = params->emc_pmacro_ddll_short_cmd_1; EMC(EMC_PMACRO_DDLL_SHORT_CMD_2) = params->emc_pmacro_ddll_short_cmd_2; - EMC(EMC_PMACRO_COMMON_PAD_TX_CTRL) = params->emc_pmacro_common_pad_tx_ctrl & 1 | 0xE; + EMC(EMC_PMACRO_COMMON_PAD_TX_CTRL) = (params->emc_pmacro_common_pad_tx_ctrl & 1) | 0xE; if (params->emc_bct_spare4) *(vu32 *)params->emc_bct_spare4 = params->emc_bct_spare5; EMC(EMC_TIMING_CONTROL) = 1; @@ -386,7 +386,7 @@ break_nosleep: EMC(EMC_PMC_SCRATCH3) = params->emc_pmc_scratch3; EMC(EMC_ACPD_CONTROL) = params->emc_acpd_control; EMC(EMC_TXDSRVTTGEN) = params->emc_txdsrvttgen; - EMC(EMC_CFG) = params->emc_cfg & 0xE | 0x3C00000; + EMC(EMC_CFG) = (params->emc_cfg & 0xE) | 0x3C00000; if (params->boot_rom_patch_control & 0x80000000) { *(vu32 *)(4 * (params->boot_rom_patch_control + 0x1C000000)) = params->boot_rom_patch_data; @@ -481,7 +481,7 @@ break_nosleep: EMC(EMC_TIMING_CONTROL) = 1; EMC(EMC_CFG_PIPE_CLK) = params->emc_cfg_pipe_clk; EMC(EMC_FDPD_CTRL_CMD_NO_RAMP) = params->emc_fdpd_ctrl_cmd_no_ramp; - SYSREG(AHB_ARBITRATION_XBAR_CTRL) = SYSREG(AHB_ARBITRATION_XBAR_CTRL) & 0xFFFEFFFF | ((params->ahb_arbitration_xbar_ctrl_meminit_done & 0xFFFF) << 16); + SYSREG(AHB_ARBITRATION_XBAR_CTRL) = (SYSREG(AHB_ARBITRATION_XBAR_CTRL) & 0xFFFEFFFF) | ((params->ahb_arbitration_xbar_ctrl_meminit_done & 0xFFFF) << 16); MC(MC_VIDEO_PROTECT_REG_CTRL) = params->mc_video_protect_write_access; MC(MC_SEC_CARVEOUT_REG_CTRL) = params->mc_sec_carveout_protect_write_access; MC(MC_MTS_CARVEOUT_REG_CTRL) = params->mc_mts_carveout_reg_ctrl; diff --git a/ipl/se.c b/ipl/se.c index b3ec008..0b2d4aa 100755 --- a/ipl/se.c +++ b/ipl/se.c @@ -124,7 +124,7 @@ static void _se_aes_ctr_set(void *ctr) void se_rsa_acc_ctrl(u32 rs, u32 flags) { if (flags & 0x7F) - SE(SE_RSA_KEYTABLE_ACCESS_REG_OFFSET + 4 * rs) = ((flags >> 4) & 4 | flags & 3) ^ 7; + SE(SE_RSA_KEYTABLE_ACCESS_REG_OFFSET + 4 * rs) = (((flags >> 4) & 4) | (flags & 3)) ^ 7; if (flags & 0x80) SE(SE_RSA_KEYTABLE_ACCESS_LOCK_OFFSET) &= ~(1 << rs); } diff --git a/ipl/tui.c b/ipl/tui.c index 3aed3bc..8761195 100755 --- a/ipl/tui.c +++ b/ipl/tui.c @@ -40,7 +40,7 @@ void tui_pbar(gfx_con_t *con, int x, int y, u32 val, u32 fgcol, u32 bgcol) void *tui_do_menu(gfx_con_t *con, menu_t *menu) { - int idx = 0, cnt; + int idx = 0, cnt = 0; int prev_idx = 0; gfx_clear_grey(con->gfx_ctxt, 0x1B); diff --git a/ipl/types.h b/ipl/types.h index 5b8a059..5aa59e9 100755 --- a/ipl/types.h +++ b/ipl/types.h @@ -26,6 +26,10 @@ #define OFFSET_OF(t, m) ((u32)&((t *)NULL)->m) #define CONTAINER_OF(mp, t, mn) ((t *)((u32)mp - OFFSET_OF(t, mn))) +typedef char s8; +typedef short s16; +typedef int s32; +typedef long long int s64; typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32;