diff --git a/main/lk2nd/0001-build-fixes.patch b/main/lk2nd/0001-build-fixes.patch deleted file mode 100644 index aae4aa2a0..000000000 --- a/main/lk2nd/0001-build-fixes.patch +++ /dev/null @@ -1,1815 +0,0 @@ -From 9fca5483818a457e11a5eeabfb487ebb71847d0d Mon Sep 17 00:00:00 2001 -From: Alexey Minnekhanov -Date: Mon, 3 Jun 2024 11:05:41 +0300 -Subject: [PATCH] build fixes - ---- - app/aboot/aboot.c | 24 ++- - app/aboot/fastboot.c | 6 +- - arch/arm/mmu.c | 4 + - dev/gcdb/display/gcdb_display.c | 32 +-- - dev/gcdb/display/panel_display.c | 6 + - dev/pmic/pm8x41/pm8x41_vib.c | 1 + - dev/vib/vibrator.c | 3 +- - include/string.h | 5 + - kernel/main.c | 2 + - lib/debug/debug.c | 7 +- - lib/fs/ext2/dir.c | 4 +- - lib/libc/string/rules.mk | 1 + - lib/libc/string/strtol.c | 242 ++++++++++++++++++++++ - lib/libfdt/fdt_overlay.c | 2 +- - platform/init.c | 2 +- - platform/msm8226/include/platform/iomap.h | 3 + - platform/msm8226/msm8226-clock.c | 4 +- - platform/msm8226/platform.c | 1 + - platform/msm8916/acpuclock.c | 3 + - platform/msm8916/include/platform/iomap.h | 8 + - platform/msm8916/msm8916-clock.c | 8 +- - platform/msm8916/platform.c | 1 + - platform/msm8974/acpuclock.c | 4 + - platform/msm8974/include/platform/iomap.h | 3 + - platform/msm8974/msm8974-clock.c | 16 +- - platform/msm8974/platform.c | 1 + - platform/msm_shared/board.c | 2 + - platform/msm_shared/boot_stats.c | 4 + - platform/msm_shared/clock_lib2.c | 3 +- - platform/msm_shared/dev_tree.c | 11 +- - platform/msm_shared/display.c | 12 ++ - platform/msm_shared/edp.c | 3 + - platform/msm_shared/edp_aux.c | 2 + - platform/msm_shared/edp_phy.c | 1 + - platform/msm_shared/hsusb.c | 16 +- - platform/msm_shared/i2c_qup.c | 4 + - platform/msm_shared/interrupts.c | 5 + - platform/msm_shared/mdp5.c | 7 +- - platform/msm_shared/mipi_dsi.c | 18 +- - platform/msm_shared/mipi_dsi_autopll.c | 3 + - platform/msm_shared/mipi_dsi_phy.c | 4 + - platform/msm_shared/mmc_sdhci.c | 4 + - platform/msm_shared/mmc_wrapper.c | 1 + - platform/msm_shared/partition_parser.c | 12 +- - platform/msm_shared/qpic_nand.c | 2 +- - platform/msm_shared/reboot.c | 2 + - platform/msm_shared/scm.c | 21 +- - platform/msm_shared/sdhci_msm.c | 3 +- - platform/msm_shared/shutdown_detect.c | 6 +- - platform/msm_shared/smem.c | 6 +- - platform/msm_shared/spmi.c | 10 +- - platform/msm_shared/usb30_dwc_hw.h | 1 + - platform/msm_shared/usb30_udc.c | 2 + - target/msm8226/init.c | 4 + - target/msm8916/init.c | 4 + - target/msm8974/init.c | 8 + - 56 files changed, 484 insertions(+), 90 deletions(-) - create mode 100644 lib/libc/string/strtol.c - -diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c -index 0ad935bba..70f35de67 100644 ---- a/app/aboot/aboot.c -+++ b/app/aboot/aboot.c -@@ -86,12 +86,16 @@ - #include "secapp_loader.h" - #include - #include -+#include -+#include - - extern bool target_use_signed_kernel(void); - extern void platform_uninit(void); - extern void target_uninit(void); - extern int get_target_boot_params(const char *cmdline, const char *part, - char *buf, int buflen); -+extern void hash_find(unsigned char *addr, unsigned int size, unsigned char *digest, unsigned char auth_alg); -+extern void save_kernel_hash_cmd(void *digest); - - void *info_buf; - void write_device_info_mmc(device_info *dev); -@@ -100,6 +104,10 @@ static int aboot_save_boot_hash_mmc(uint32_t image_addr, uint32_t image_size); - extern void display_fbcon_message(char *str); - static int aboot_frp_unlock(char *pname, void *data, unsigned sz); - static inline uint64_t validate_partition_size(); -+ -+extern uint32_t read_der_message_length(unsigned char* input, unsigned sz); -+extern int image_verify(unsigned char *image_ptr, unsigned char *signature_ptr, unsigned int image_size, unsigned hash_type); -+ - bool pwr_key_is_pressed = false; - unsigned boot_into_recovery = 0; - unsigned bytes_to_round_page = 0; -@@ -320,7 +328,7 @@ static unsigned char *update_cmdline0(const char * cmdline) - { - int cmdline_len = 0; - int have_cmdline = 0; -- unsigned char *cmdline_final = NULL; -+ char *cmdline_final = NULL; - int pause_at_bootup = 0; - bool warm_boot = false; - bool gpt_exists = partition_gpt_exists(); -@@ -452,7 +460,7 @@ static unsigned char *update_cmdline0(const char * cmdline) - const char *src; - unsigned char *dst; - -- cmdline_final = (unsigned char*) malloc((cmdline_len + 4) & (~3)); -+ cmdline_final = (char*) malloc((cmdline_len + 4) & (~3)); - ASSERT(cmdline_final != NULL); - memset((void *)cmdline_final, 0, sizeof(*cmdline_final)); - dst = cmdline_final; -@@ -622,8 +630,9 @@ static unsigned char *update_cmdline0(const char * cmdline) - free(boot_dev_buf); - - dprintf(INFO, "cmdline: %s\n", cmdline_final ? cmdline_final : ""); -- return cmdline_final; -+ return (unsigned char *)cmdline_final; - } -+ - static char *concat_args(const char *a, const char *b) - { - int lenA = strlen(a), lenB = strlen(b); -@@ -633,6 +642,7 @@ static char *concat_args(const char *a, const char *b) - memcpy(r + lenA + 1, b, lenB + 1); - return r; - } -+ - unsigned char *update_cmdline(const char *cmdline) - { - #if WITH_LK2ND -@@ -817,7 +827,7 @@ void boot_linux(void *kernel, unsigned *tags, - uint32_t tags_phys = PA((addr_t)tags); - struct kernel64_hdr *kptr = (struct kernel64_hdr*)kernel; - -- ramdisk = PA(ramdisk); -+ ramdisk = (void *)PA((addr_t)ramdisk); - - final_cmdline = update_cmdline((const char*)cmdline); - -@@ -1934,7 +1944,7 @@ static int read_allow_oem_unlock(device_info *dev) - ptn_size = partition_get_size(index); - offset = ptn_size - blocksize; - -- if (mmc_read(ptn + offset, buf, sizeof(buf))) -+ if (mmc_read(ptn + offset, (uint32_t *)buf, sizeof(buf))) - { - dprintf(CRITICAL, "Reading MMC failed\n"); - return -1; -@@ -1969,7 +1979,7 @@ static int write_allow_oem_unlock(bool allow_unlock) - ptn_size = partition_get_size(index); - offset = ptn_size - blocksize; - -- if (mmc_read(ptn + offset, buf, sizeof(buf))) -+ if (mmc_read(ptn + offset, (uint32_t *)buf, sizeof(buf))) - { - dprintf(CRITICAL, "Reading MMC failed\n"); - return -1; -@@ -4139,7 +4149,7 @@ static int aboot_save_boot_hash_mmc(uint32_t image_addr, uint32_t image_size) - #endif - - target_crypto_init_params(); -- hash_find(image_addr, image_size, (unsigned char *)&digest, auth_algo); -+ hash_find((unsigned char *)image_addr, image_size, (unsigned char *)&digest, auth_algo); - - save_kernel_hash_cmd(digest); - dprintf(INFO, "aboot_save_boot_hash_mmc: imagesize_actual size %d bytes.\n", (int) image_size); -diff --git a/app/aboot/fastboot.c b/app/aboot/fastboot.c -index 36e6dedac..bcf72fbf8 100644 ---- a/app/aboot/fastboot.c -+++ b/app/aboot/fastboot.c -@@ -288,7 +288,7 @@ static int hsusb_usb_read(void *_buf, unsigned len) - - while (len > 0) { - xfer = (len > MAX_USBFS_BULK_SIZE) ? MAX_USBFS_BULK_SIZE : len; -- req->buf = PA((addr_t)buf); -+ req->buf = (void *)PA((addr_t)buf); - req->length = xfer; - req->complete = req_complete; - r = udc_request_queue(out, req); -@@ -314,7 +314,7 @@ static int hsusb_usb_read(void *_buf, unsigned len) - * Force reload of buffer from memory - * since transaction is complete now. - */ -- arch_invalidate_cache_range(_buf, count); -+ arch_invalidate_cache_range((addr_t)_buf, count); - return count; - - oops: -@@ -334,7 +334,7 @@ static int hsusb_usb_write(void *buf, unsigned len) - - while (len > 0) { - xfer = (len > MAX_USBFS_BULK_SIZE) ? MAX_USBFS_BULK_SIZE : len; -- req->buf = PA((addr_t)_buf); -+ req->buf = (void *)PA((addr_t)_buf); - req->length = xfer; - req->complete = req_complete; - r = udc_request_queue(in, req); -diff --git a/arch/arm/mmu.c b/arch/arm/mmu.c -index 3e086270d..5ee424986 100644 ---- a/arch/arm/mmu.c -+++ b/arch/arm/mmu.c -@@ -26,8 +26,12 @@ - #include - #include - #include -+#include - #include - -+extern int platform_use_identity_mmu_mappings(void); -+extern void platform_init_mmu_mappings(void); -+ - #if ARM_WITH_MMU - - #define MB (1024*1024) -diff --git a/dev/gcdb/display/gcdb_display.c b/dev/gcdb/display/gcdb_display.c -index e263a5e81..505e9f967 100644 ---- a/dev/gcdb/display/gcdb_display.c -+++ b/dev/gcdb/display/gcdb_display.c -@@ -36,7 +36,9 @@ - #include - #include - #include -+#include - #include -+#include - - #include "include/display_resource.h" - #include "include/panel.h" -@@ -45,6 +47,14 @@ - #include "target/display.h" - #include "gcdb_autopll.h" - -+extern uint8_t target_is_edp(); -+extern void target_edp_panel_init(struct msm_panel_info *pinfo); -+extern int target_edp_panel_clock(uint8_t enable, struct msm_panel_info *pinfo); -+extern int target_edp_panel_enable(void); -+extern int target_edp_panel_disable(void); -+extern int target_edp_bl_ctrl(int enable); -+extern int oem_panel_select(const char *panel_name, struct panel_struct *panel, struct msm_panel_info *pinfo, struct mdss_dsi_phy_ctrl *phy_db); -+ - /*---------------------------------------------------------------------------*/ - /* static */ - /*---------------------------------------------------------------------------*/ -@@ -76,10 +86,9 @@ static uint32_t mdss_dsi_panel_reset(uint8_t enable) - return ret; - } - --static uint32_t mdss_dsi_panel_clock(uint8_t enable, -- struct msm_panel_info *pinfo) -+static int mdss_dsi_panel_clock(int enable, struct msm_panel_info *pinfo) - { -- uint32_t ret = NO_ERROR; -+ int ret = NO_ERROR; - - ret = calculate_clock_config(pinfo); - if (ret) { -@@ -92,8 +101,7 @@ static uint32_t mdss_dsi_panel_clock(uint8_t enable, - return ret; - } - --static int mdss_dsi_panel_power(uint8_t enable, -- struct msm_panel_info *pinfo) -+static int mdss_dsi_panel_power(int enable, struct msm_panel_info *pinfo) - { - int ret = NO_ERROR; - -@@ -151,7 +159,7 @@ static int mdss_dsi_panel_pre_init(void) - return ret; - } - --static int mdss_dsi_bl_enable(uint8_t enable) -+static int mdss_dsi_bl_enable(int enable) - { - int ret = NO_ERROR; - -@@ -302,13 +310,12 @@ static void init_platform_data() - - static void mdss_edp_panel_init(struct msm_panel_info *pinfo) - { -- return target_edp_panel_init(pinfo); -+ target_edp_panel_init(pinfo); - } - --static uint32_t mdss_edp_panel_clock(uint8_t enable, -- struct msm_panel_info *pinfo) -+static int mdss_edp_panel_clock(int enable) - { -- return target_edp_panel_clock(enable, pinfo); -+ return target_edp_panel_clock(enable, NULL); - } - - static uint32_t mdss_edp_panel_enable(void) -@@ -321,8 +328,7 @@ static uint32_t mdss_edp_panel_disable(void) - return target_edp_panel_disable(); - } - --static int mdss_edp_panel_power(uint8_t enable, -- struct msm_panel_info *pinfo) -+static int mdss_edp_panel_power(int enable, struct msm_panel_info *pinfo) - { - int ret = NO_ERROR; - -@@ -358,7 +364,7 @@ static int mdss_edp_panel_power(uint8_t enable, - return ret; - } - --static int mdss_edp_bl_enable(uint8_t enable) -+static int mdss_edp_bl_enable(int enable) - { - int ret = NO_ERROR; - -diff --git a/dev/gcdb/display/panel_display.c b/dev/gcdb/display/panel_display.c -index c4291a58e..d3fefa1ad 100755 ---- a/dev/gcdb/display/panel_display.c -+++ b/dev/gcdb/display/panel_display.c -@@ -47,6 +47,12 @@ - #include "panel_display.h" - #include "include/panel.h" - -+extern int target_display_pre_on(); -+extern int target_display_pre_off(); -+extern int target_display_post_on(); -+extern int target_display_post_off(); -+extern int mdss_dsi_cmd_mode_config(uint16_t disp_width, uint16_t disp_height, uint16_t img_width, uint16_t img_height, uint16_t dst_format, uint8_t ystride, uint8_t lane_en, uint8_t interleav, uint32_t ctl_base); -+ - /*---------------------------------------------------------------------------*/ - /* Panel Init */ - /*---------------------------------------------------------------------------*/ -diff --git a/dev/pmic/pm8x41/pm8x41_vib.c b/dev/pmic/pm8x41/pm8x41_vib.c -index 7dbba773f..42dc3d3e4 100644 ---- a/dev/pmic/pm8x41/pm8x41_vib.c -+++ b/dev/pmic/pm8x41/pm8x41_vib.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - #include - - #define QPNP_VIB_EN BIT(7) -diff --git a/dev/vib/vibrator.c b/dev/vib/vibrator.c -index e8cb8c7c3..2ea9bcf87 100644 ---- a/dev/vib/vibrator.c -+++ b/dev/vib/vibrator.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -52,7 +53,7 @@ void vib_turn_off() - } - - /* Function to turn off vibrator when the vib_timer is expired. */ --static enum handler_return vib_timer_func(struct timer *v_timer, void *arg) -+static enum handler_return vib_timer_func(struct timer *v_timer, long unsigned int arg0, void *arg1) - { - timer_cancel(&vib_timer); - vib_turn_off(); -diff --git a/include/string.h b/include/string.h -index f81562f8b..0d8607c09 100644 ---- a/include/string.h -+++ b/include/string.h -@@ -59,6 +59,11 @@ size_t strxfrm(char *dest, const char *src, size_t n) __PURE; - char *strdup(const char *str) __MALLOC; - void strrev(unsigned char *str); - -+unsigned long long strtoull(const char *restrict s, char **restrict p, int base); -+long long strtoll(const char *restrict s, char **restrict p, int base); -+unsigned long strtoul(const char *restrict s, char **restrict p, int base); -+long strtol(const char *restrict s, char **restrict p, int base); -+ - #ifdef __cplusplus - } /* extern "C" */ - #endif -diff --git a/kernel/main.c b/kernel/main.c -index 95a433951..0e5a87b3b 100644 ---- a/kernel/main.c -+++ b/kernel/main.c -@@ -34,6 +34,8 @@ - #include - #include - #include -+#include -+#include - - extern void *__ctor_list; - extern void *__ctor_end; -diff --git a/lib/debug/debug.c b/lib/debug/debug.c -index c6611835a..36c195ff9 100644 ---- a/lib/debug/debug.c -+++ b/lib/debug/debug.c -@@ -36,8 +36,7 @@ - #include - #include - --void __attribute__ ((noreturn)) --__stack_chk_fail (void) -+void __attribute__ ((noreturn)) __stack_chk_fail (void) - { - panic("stack smashing detected."); - } -@@ -50,13 +49,13 @@ void spin(uint32_t usecs) - ; - } - --void halt(void) -+void __attribute__ ((noreturn)) halt(void) - { - enter_critical_section(); // disable ints - platform_halt(); - } - --void _panic(void *caller, const char *fmt, ...) -+void __attribute__ ((noreturn)) _panic(void *caller, const char *fmt, ...) - { - dprintf(ALWAYS, "panic (caller %p): ", caller); - -diff --git a/lib/fs/ext2/dir.c b/lib/fs/ext2/dir.c -index 90dc42584..1ecc53413 100644 ---- a/lib/fs/ext2/dir.c -+++ b/lib/fs/ext2/dir.c -@@ -225,7 +225,7 @@ status_t ext2_open_directory(fscookie *cookie, const char *path, dircookie **dir - dir->offset = 0; - dir->length = entry_len; - -- *dircookie = dir; -+ *dircookie = (struct dircookie *)dir; - - return 0; - } -@@ -254,7 +254,7 @@ status_t ext2_read_directory(dircookie *dircookie, struct dirent *ent) { - status_t ext2_close_directory(dircookie *dircookie) { - ext2_dir_t *dir = (ext2_dir_t *)dircookie; - -- ext2_close_file(dir->file); -+ ext2_close_file((filecookie *)dir->file); - free(dir); - return 0; - } -diff --git a/lib/libc/string/rules.mk b/lib/libc/string/rules.mk -index dd594d5fa..25a66e7f1 100644 ---- a/lib/libc/string/rules.mk -+++ b/lib/libc/string/rules.mk -@@ -30,6 +30,7 @@ C_STRING_OPS := \ - strspn \ - strstr \ - strtok \ -+ strtol \ - strxfrm - - LIBC_STRING_C_DIR := $(LOCAL_DIR) -diff --git a/lib/libc/string/strtol.c b/lib/libc/string/strtol.c -new file mode 100644 -index 000000000..5e984401b ---- /dev/null -+++ b/lib/libc/string/strtol.c -@@ -0,0 +1,242 @@ -+#include -+ -+/* The shcnt field stores the number of bytes read so far, offset by -+ * the value of buf-rpos at the last function call (__shlim or __shgetc), -+ * so that between calls the inline shcnt macro can add rpos-buf to get -+ * the actual count. */ -+ -+/* This function assumes it will never be called if there is already -+ * data buffered for reading. */ -+ -+#define EOF (-1) -+ -+#define FFINALLOCK(f) ((f)->lock>=0 ? __lockfile((f)) : 0) -+#define FLOCK(f) int __need_unlock = ((f)->lock>=0 ? __lockfile((f)) : 0) -+#define FUNLOCK(f) do { if (__need_unlock) __unlockfile((f)); } while (0) -+ -+#define F_PERM 1 -+#define F_NORD 4 -+#define F_NOWR 8 -+#define F_EOF 16 -+#define F_ERR 32 -+#define F_SVB 64 -+#define F_APP 128 -+ -+typedef struct _IO_FILE FILE; -+ -+struct _IO_FILE { -+ unsigned flags; -+ unsigned char *rpos, *rend; -+ int (*close)(FILE *); -+ unsigned char *wend, *wpos; -+ unsigned char *mustbezero_1; -+ unsigned char *wbase; -+ size_t (*read)(FILE *, unsigned char *, size_t); -+ size_t (*write)(FILE *, const unsigned char *, size_t); -+ off_t (*seek)(FILE *, off_t, int); -+ unsigned char *buf; -+ size_t buf_size; -+ FILE *prev, *next; -+ int fd; -+ int pipe_pid; -+ long lockcount; -+ int mode; -+ volatile int lock; -+ int lbf; -+ void *cookie; -+ off_t off; -+ char *getln_buf; -+ void *mustbezero_2; -+ unsigned char *shend; -+ off_t shlim, shcnt; -+ FILE *prev_locked, *next_locked; -+ struct __locale_struct *locale; -+}; -+ -+static int __toread(FILE *f) -+{ -+ f->mode |= f->mode-1; -+ if (f->wpos != f->wbase) f->write(f, 0, 0); -+ f->wpos = f->wbase = f->wend = 0; -+ if (f->flags & F_NORD) { -+ f->flags |= F_ERR; -+ return EOF; -+ } -+ f->rpos = f->rend = f->buf + f->buf_size; -+ return (f->flags & F_EOF) ? EOF : 0; -+} -+ -+static int __uflow(FILE *f) -+{ -+ unsigned char c; -+ if (!__toread(f) && f->read(f, &c, 1)==1) return c; -+ return EOF; -+} -+ -+#define shcnt(f) ((f)->shcnt + ((f)->rpos - (f)->buf)) -+#define shlim(f, lim) __shlim((f), (lim)) -+#define shgetc(f) (((f)->rpos != (f)->shend) ? *(f)->rpos++ : __shgetc(f)) -+#define shunget(f) ((f)->shlim>=0 ? (void)(f)->rpos-- : (void)0) -+ -+#define sh_fromstring(f, s) \ -+ ((f)->buf = (f)->rpos = (void *)(s), (f)->rend = (void*)-1) -+ -+static void __shlim(FILE *f, off_t lim) -+{ -+ f->shlim = lim; -+ f->shcnt = f->buf - f->rpos; -+ /* If lim is nonzero, rend must be a valid pointer. */ -+ if (lim && f->rend - f->rpos > lim) -+ f->shend = f->rpos + lim; -+ else -+ f->shend = f->rend; -+} -+ -+static int __shgetc(FILE *f) -+{ -+ int c; -+ off_t cnt = shcnt(f); -+ if (f->shlim && cnt >= f->shlim || (c=__uflow(f)) < 0) { -+ f->shcnt = f->buf - f->rpos + cnt; -+ f->shend = f->rpos; -+ f->shlim = -1; -+ return EOF; -+ } -+ cnt++; -+ if (f->shlim && f->rend - f->rpos > f->shlim - cnt) -+ f->shend = f->rpos + (f->shlim - cnt); -+ else -+ f->shend = f->rend; -+ f->shcnt = f->buf - f->rpos + cnt; -+ if (f->rpos <= f->buf) f->rpos[-1] = c; -+ return c; -+} -+ -+static int isspace(int c) -+{ -+ return c == ' ' || (unsigned)c-'\t' < 5; -+} -+ -+/* Lookup table for digit values. -1==255>=36 -> invalid */ -+static const unsigned char table[] = { -1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, -+-1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, -+25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1, -+-1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, -+25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -+}; -+ -+static unsigned long long __intscan(FILE *f, unsigned base, int pok, unsigned long long lim) -+{ -+ const unsigned char *val = table+1; -+ int c, neg=0; -+ unsigned x; -+ unsigned long long y; -+ if (base > 36 || base == 1) { -+ return 0; -+ } -+ while (isspace((c=shgetc(f)))); -+ if (c=='+' || c=='-') { -+ neg = -(c=='-'); -+ c = shgetc(f); -+ } -+ if ((base == 0 || base == 16) && c=='0') { -+ c = shgetc(f); -+ if ((c|32)=='x') { -+ c = shgetc(f); -+ if (val[c]>=16) { -+ shunget(f); -+ if (pok) shunget(f); -+ else shlim(f, 0); -+ return 0; -+ } -+ base = 16; -+ } else if (base == 0) { -+ base = 8; -+ } -+ } else { -+ if (base == 0) base = 10; -+ if (val[c] >= base) { -+ shunget(f); -+ shlim(f, 0); -+ return 0; -+ } -+ } -+ if (base == 10) { -+ for (x=0; c-'0'<10U && x<=UINT_MAX/10-1; c=shgetc(f)) -+ x = x*10 + (c-'0'); -+ for (y=x; c-'0'<10U && y<=ULLONG_MAX/10 && 10*y<=ULLONG_MAX-(c-'0'); c=shgetc(f)) -+ y = y*10 + (c-'0'); -+ if (c-'0'>=10U) goto done; -+ } else if (!(base & base-1)) { -+ int bs = "\0\1\2\4\7\3\6\5"[(0x17*base)>>5&7]; -+ for (x=0; val[c]>bs; c=shgetc(f)) -+ y = y<=lim) { -+ if (!(lim&1) && !neg) { -+ return lim-1; -+ } else if (y>lim) { -+ return lim; -+ } -+ } -+ return (y^neg)-neg; -+} -+ -+static unsigned long long strtox(const char *s, char **p, int base, unsigned long long lim) -+{ -+ FILE f; -+ sh_fromstring(&f, s); -+ shlim(&f, 0); -+ unsigned long long y = __intscan(&f, base, 1, lim); -+ if (p) { -+ size_t cnt = shcnt(&f); -+ *p = (char *)s + cnt; -+ } -+ return y; -+} -+ -+unsigned long long strtoull(const char *restrict s, char **restrict p, int base) -+{ -+ return strtox(s, p, base, ULLONG_MAX); -+} -+ -+long long strtoll(const char *restrict s, char **restrict p, int base) -+{ -+ return strtox(s, p, base, LLONG_MIN); -+} -+ -+unsigned long strtoul(const char *restrict s, char **restrict p, int base) -+{ -+ return strtox(s, p, base, ULONG_MAX); -+} -+ -+long strtol(const char *restrict s, char **restrict p, int base) -+{ -+ return strtox(s, p, base, 0UL+LONG_MIN); -+} -diff --git a/lib/libfdt/fdt_overlay.c b/lib/libfdt/fdt_overlay.c -index d217e79b6..e05365a54 100644 ---- a/lib/libfdt/fdt_overlay.c -+++ b/lib/libfdt/fdt_overlay.c -@@ -476,7 +476,7 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off, - if (!name_len) - return -FDT_ERR_BADOVERLAY; - -- poffset = strtoul(sep + 1, &endptr, 10); -+ poffset = strtol(sep + 1, &endptr, 10); - if ((*endptr != '\0') || (endptr <= (sep + 1))) - return -FDT_ERR_BADOVERLAY; - -diff --git a/platform/init.c b/platform/init.c -index 78a5c02d3..0b7bace61 100644 ---- a/platform/init.c -+++ b/platform/init.c -@@ -103,7 +103,7 @@ __WEAK void ce_clock_init(void) - - __WEAK addr_t get_bs_info_addr() - { -- return NULL; -+ return 0; - } - - __WEAK uint32_t platform_get_sclk_count(void) -diff --git a/platform/msm8226/include/platform/iomap.h b/platform/msm8226/include/platform/iomap.h -index 289a2cceb..ff54dc5f0 100644 ---- a/platform/msm8226/include/platform/iomap.h -+++ b/platform/msm8226/include/platform/iomap.h -@@ -191,6 +191,9 @@ - #define MDP_VP_0_MIXER_0_BASE REG_MDP(0x3200) - #define MDP_VP_0_MIXER_1_BASE REG_MDP(0x3600) - -+#define DSIPHY_PLL_BASE (0x200) -+#define DSIPHY_PLL_CTRL(x) REG_DSI(DSIPHY_PLL_BASE + (x) * 4) -+ - #define SOFT_RESET 0x118 - #define CLK_CTRL 0x11C - #define TRIG_CTRL 0x084 -diff --git a/platform/msm8226/msm8226-clock.c b/platform/msm8226/msm8226-clock.c -index d79b8953d..0ef1c5cd9 100644 ---- a/platform/msm8226/msm8226-clock.c -+++ b/platform/msm8226/msm8226-clock.c -@@ -501,7 +501,7 @@ static struct branch_clk mdss_mdp_clk = { - }; - - static struct branch_clk mdss_mdp_lut_clk = { -- .cbcr_reg = MDP_LUT_CBCR, -+ .cbcr_reg = (uint32_t *) MDP_LUT_CBCR, - .parent = &mdss_mdp_clk_src.c, - .has_sibling = 1, - -@@ -512,7 +512,7 @@ static struct branch_clk mdss_mdp_lut_clk = { - }; - - static struct branch_clk mdss_vsync_clk = { -- .cbcr_reg = MDSS_VSYNC_CBCR, -+ .cbcr_reg = (uint32_t *) MDSS_VSYNC_CBCR, - .parent = &vsync_clk_src.c, - .has_sibling = 0, - -diff --git a/platform/msm8226/platform.c b/platform/msm8226/platform.c -index 1d15a626d..887e3b075 100644 ---- a/platform/msm8226/platform.c -+++ b/platform/msm8226/platform.c -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - - #define MB (1024*1024) - -diff --git a/platform/msm8916/acpuclock.c b/platform/msm8916/acpuclock.c -index 73d18a351..0317d5cc4 100644 ---- a/platform/msm8916/acpuclock.c -+++ b/platform/msm8916/acpuclock.c -@@ -193,6 +193,9 @@ void mdp_gdsc_ctrl(uint8_t enable) - } - } - -+int platform_is_msm8939(); -+int platform_is_msm8929(); -+ - /* Enable all the MDP branch clocks */ - void mdp_clock_enable(void) - { -diff --git a/platform/msm8916/include/platform/iomap.h b/platform/msm8916/include/platform/iomap.h -index 5e23a2528..25149188c 100644 ---- a/platform/msm8916/include/platform/iomap.h -+++ b/platform/msm8916/include/platform/iomap.h -@@ -91,6 +91,11 @@ - #define TLMM_BASE_ADDR 0x1000000 - #define GPIO_CONFIG_ADDR(x) (TLMM_BASE_ADDR + (x)*0x1000) - #define GPIO_IN_OUT_ADDR(x) (TLMM_BASE_ADDR + 0x00000004 + (x)*0x1000) -+#define GPIO_OUT_SET_ADDR(x) (TLMM_BASE_ADDR + 0x3040 + (x/32)*0x04) -+#define GPIO_OUT_CLR_ADDR(x) (TLMM_BASE_ADDR + 0x3020 + (x/32)*0x04) -+#define GPIO_OUT_OE_SET_ADDR(x) (TLMM_BASE_ADDR + 0x3120 + (x/32)*0x04) -+#define GPIO_OUT_VAL(x) (1 << (x - (x/32)*32)) -+#define GPIO_OUT_OE_VAL(x) (1 << (x - (x/32)*32)) - - #define MPM2_MPM_CTRL_BASE 0x004A0000 - #define MPM2_MPM_PS_HOLD 0x004AB000 -@@ -206,6 +211,9 @@ - #define REG_DSI(off) (MIPI_DSI_BASE + 0x04 + (off)) - #define MDP_BASE (0x1A00000) - #define REG_MDP(off) (MDP_BASE + (off)) -+#define DSIPHY_PLL_BASE (0x200) -+#define DSIPHY_PLL_CTRL(x) REG_DSI(DSIPHY_PLL_BASE + (x) * 4) -+ - #define MDP_HW_REV REG_MDP(0x1000) - #define MDP_VP_0_VIG_0_BASE REG_MDP(0x5000) - #define MDP_VP_0_VIG_1_BASE REG_MDP(0x7000) -diff --git a/platform/msm8916/msm8916-clock.c b/platform/msm8916/msm8916-clock.c -index 86df72211..f70cb4ecb 100644 ---- a/platform/msm8916/msm8916-clock.c -+++ b/platform/msm8916/msm8916-clock.c -@@ -34,6 +34,7 @@ - #include - #include - #include -+#include - - - /* Mux source select values */ -@@ -506,7 +507,7 @@ static struct branch_clk mdss_mdp_clk = { - }; - - static struct branch_clk mdss_vsync_clk = { -- .cbcr_reg = MDSS_VSYNC_CBCR, -+ .cbcr_reg = (uint32_t *)MDSS_VSYNC_CBCR, - .parent = &vsync_clk_src.c, - .has_sibling = 0, - -@@ -606,7 +607,7 @@ static struct rcg_clk gcc_blsp1_qup2_i2c_apps_clk_src = - }; - - static struct branch_clk gcc_blsp1_qup2_i2c_apps_clk = { -- .cbcr_reg = GCC_BLSP1_QUP2_APPS_CBCR, -+ .cbcr_reg = (uint32_t *)GCC_BLSP1_QUP2_APPS_CBCR, - .parent = &gcc_blsp1_qup2_i2c_apps_clk_src.c, - - .c = { -@@ -807,6 +808,9 @@ void msm8939_clock_override() - mdss_mdp_clk_src.freq_tbl = ftbl_mdss_mdp_clk_src; - } - -+int platform_is_msm8939(); -+int platform_is_msm8929(); -+ - void platform_clock_init(void) - { - if (platform_is_msm8939() || platform_is_msm8929()) { -diff --git a/platform/msm8916/platform.c b/platform/msm8916/platform.c -index 103d099f4..621369b79 100644 ---- a/platform/msm8916/platform.c -+++ b/platform/msm8916/platform.c -@@ -76,6 +76,7 @@ static mmu_section_t mmu_section_table[] = { - - int platform_is_msm8939(); - int platform_is_msm8929(); -+void platform_clock_init(); - - void platform_early_init(void) - { -diff --git a/platform/msm8974/acpuclock.c b/platform/msm8974/acpuclock.c -index 730147d8c..55b253048 100644 ---- a/platform/msm8974/acpuclock.c -+++ b/platform/msm8974/acpuclock.c -@@ -38,6 +38,10 @@ - #include - #include - -+extern int platform_is_8974(); -+extern int platform_is_8974ac(); -+extern int platform_is_8974Pro(); -+ - void hsusb_clock_init(void) - { - int ret; -diff --git a/platform/msm8974/include/platform/iomap.h b/platform/msm8974/include/platform/iomap.h -index 7490cabd8..4821d82b5 100644 ---- a/platform/msm8974/include/platform/iomap.h -+++ b/platform/msm8974/include/platform/iomap.h -@@ -238,6 +238,9 @@ - #define MDP_VP_0_MIXER_0_BASE REG_MDP(0x3200) - #define MDP_VP_0_MIXER_1_BASE REG_MDP(0x3600) - -+#define DSIPHY_PLL_BASE (0x200) -+#define DSIPHY_PLL_CTRL(x) REG_DSI(DSIPHY_PLL_BASE + (x) * 4) -+ - #define SOFT_RESET 0x118 - #define CLK_CTRL 0x11C - #define TRIG_CTRL 0x084 -diff --git a/platform/msm8974/msm8974-clock.c b/platform/msm8974/msm8974-clock.c -index 8f3dadf7e..e1c69a831 100644 ---- a/platform/msm8974/msm8974-clock.c -+++ b/platform/msm8974/msm8974-clock.c -@@ -35,6 +35,10 @@ - #include - #include - -+extern int platform_is_8974(); -+extern int platform_is_8974ac(); -+extern int platform_is_8974Pro(); -+ - - /* Mux source select values */ - #define cxo_source_val 0 -@@ -204,7 +208,7 @@ static struct branch_clk gcc_sdcc1_ahb_clk = - - static struct branch_clk gcc_sdcc1_cdccal_sleep_clk = - { -- .cbcr_reg = SDCC1_CDCCAL_SLEEP_CBCR, -+ .cbcr_reg = (uint32_t *) SDCC1_CDCCAL_SLEEP_CBCR, - .has_sibling = 1, - - .c = { -@@ -215,7 +219,7 @@ static struct branch_clk gcc_sdcc1_cdccal_sleep_clk = - - static struct branch_clk gcc_sdcc1_cdccal_ff_clk = - { -- .cbcr_reg = SDCC1_CDCCAL_FF_CBCR, -+ .cbcr_reg = (uint32_t *) SDCC1_CDCCAL_FF_CBCR, - .has_sibling = 1, - - .c = { -@@ -486,7 +490,7 @@ static struct vote_clk gcc_ce1_axi_clk = { - - - struct branch_clk gcc_blsp2_qup5_i2c_apps_clk = { -- .cbcr_reg = BLSP2_QUP5_I2C_APPS_CBCR, -+ .cbcr_reg = (uint32_t *) BLSP2_QUP5_I2C_APPS_CBCR, - .parent = &cxo_clk_src.c, - - .c = { -@@ -661,7 +665,7 @@ static struct branch_clk mdss_mdp_clk = { - }; - - static struct branch_clk mdss_mdp_lut_clk = { -- .cbcr_reg = MDP_LUT_CBCR, -+ .cbcr_reg = (uint32_t *) MDP_LUT_CBCR, - .parent = &mdss_mdp_clk_src.c, - .has_sibling = 1, - -@@ -672,7 +676,7 @@ static struct branch_clk mdss_mdp_lut_clk = { - }; - - static struct branch_clk mdss_vsync_clk = { -- .cbcr_reg = MDSS_VSYNC_CBCR, -+ .cbcr_reg = (uint32_t *) MDSS_VSYNC_CBCR, - .parent = &vsync_clk_src.c, - .has_sibling = 0, - -@@ -699,7 +703,7 @@ static struct rcg_clk edpaux_clk_src = { - }; - - static struct branch_clk mdss_edpaux_clk = { -- .cbcr_reg = MDSS_EDPAUX_CBCR, -+ .cbcr_reg = (uint32_t *) MDSS_EDPAUX_CBCR, - .parent = &edpaux_clk_src.c, - .has_sibling = 0, - -diff --git a/platform/msm8974/platform.c b/platform/msm8974/platform.c -index a8d4ea4d9..8bdf5be6d 100644 ---- a/platform/msm8974/platform.c -+++ b/platform/msm8974/platform.c -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - - #define MB (1024*1024) - -diff --git a/platform/msm_shared/board.c b/platform/msm_shared/board.c -index 2d94750b4..cb06e3ce2 100644 ---- a/platform/msm_shared/board.c -+++ b/platform/msm_shared/board.c -@@ -31,6 +31,8 @@ - #include - #include - #include -+#include -+#include - - struct board_data board = {UNKNOWN, - 0, -diff --git a/platform/msm_shared/boot_stats.c b/platform/msm_shared/boot_stats.c -index 551000e95..be66a94b2 100644 ---- a/platform/msm_shared/boot_stats.c -+++ b/platform/msm_shared/boot_stats.c -@@ -31,7 +31,11 @@ - #include - #include - -+extern addr_t get_bs_info_addr(); -+extern uint32_t platform_get_sclk_count(); -+ - static uint32_t kernel_load_start; -+ - void bs_set_timestamp(enum bs_entry bs_id) - { - addr_t bs_imem = get_bs_info_addr(); -diff --git a/platform/msm_shared/clock_lib2.c b/platform/msm_shared/clock_lib2.c -index f5e321a4b..7d7fbce5a 100644 ---- a/platform/msm_shared/clock_lib2.c -+++ b/platform/msm_shared/clock_lib2.c -@@ -25,6 +25,7 @@ - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -+#include "stdint.h" - #include - #include - #include -@@ -270,5 +271,5 @@ int clock_lib2_branch_clk_reset(struct clk *c, enum clk_reset_action action) - if (!bclk) - return 0; - -- return __clock_lib2_branch_clk_reset(bclk->bcr_reg, action); -+ return __clock_lib2_branch_clk_reset((uint32_t)bclk->bcr_reg, action); - } -diff --git a/platform/msm_shared/dev_tree.c b/platform/msm_shared/dev_tree.c -index 2d2174b98..e996e9665 100755 ---- a/platform/msm_shared/dev_tree.c -+++ b/platform/msm_shared/dev_tree.c -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - #include - - struct dt_entry_v1 -@@ -555,7 +556,7 @@ void *dev_tree_appended(void *kernel, uint32_t kernel_size, uint32_t dtb_offset, - } - /* free queue's memory */ - list_for_every_entry(&dt_entry_queue->node, dt_node_tmp1, dt_node, node) { -- dt_node_tmp2 = dt_node_tmp1->node.prev; -+ dt_node_tmp2 = (struct dt_entry_node *)dt_node_tmp1->node.prev; - dt_entry_list_delete(dt_node_tmp1); - dt_node_tmp1 = dt_node_tmp2; - } -@@ -806,7 +807,7 @@ static int platform_dt_absolute_compat_match(struct dt_entry_node *dt_list, uint - dt_node_tmp1->dt_entry_m->pmic_rev[2], dt_node_tmp1->dt_entry_m->pmic_rev[3], - dt_node_tmp1->dt_entry_m->offset, dt_node_tmp1->dt_entry_m->size); - -- dt_node_tmp2 = dt_node_tmp1->node.prev; -+ dt_node_tmp2 = (struct dt_entry_node *)dt_node_tmp1->node.prev; - dt_entry_list_delete(dt_node_tmp1); - dt_node_tmp1 = dt_node_tmp2; - delete_current_dt = 0; -@@ -880,7 +881,7 @@ static int update_dtb_entry_node(struct dt_entry_node *dt_list, uint32_t dtb_inf - dt_node_tmp1->dt_entry_m->pmic_rev[2], dt_node_tmp1->dt_entry_m->pmic_rev[3], - dt_node_tmp1->dt_entry_m->offset, dt_node_tmp1->dt_entry_m->size); - -- dt_node_tmp2 = dt_node_tmp1->node.prev; -+ dt_node_tmp2 = (struct dt_entry_node *)dt_node_tmp1->node.prev; - dt_entry_list_delete(dt_node_tmp1); - dt_node_tmp1 = dt_node_tmp2; - } -@@ -924,7 +925,7 @@ static int update_dtb_entry_node(struct dt_entry_node *dt_list, uint32_t dtb_inf - dt_node_tmp1->dt_entry_m->pmic_rev[2], dt_node_tmp1->dt_entry_m->pmic_rev[3], - dt_node_tmp1->dt_entry_m->offset, dt_node_tmp1->dt_entry_m->size); - -- dt_node_tmp2 = dt_node_tmp1->node.prev; -+ dt_node_tmp2 = (struct dt_entry_node *)dt_node_tmp1->node.prev; - dt_entry_list_delete(dt_node_tmp1); - dt_node_tmp1 = dt_node_tmp2; - } -@@ -1149,7 +1150,7 @@ int dev_tree_get_entry_info(struct dt_table *table, struct dt_entry *dt_entry_in - - list_for_every_entry(&dt_entry_queue->node, dt_node_tmp1, dt_node, node) { - /* free node memory */ -- dt_node_tmp2 = dt_node_tmp1->node.prev; -+ dt_node_tmp2 = (struct dt_entry_node *)dt_node_tmp1->node.prev; - dt_entry_list_delete(dt_node_tmp1); - dt_node_tmp1 = dt_node_tmp2; - } -diff --git a/platform/msm_shared/display.c b/platform/msm_shared/display.c -index 91d8ba19a..d43725372 100644 ---- a/platform/msm_shared/display.c -+++ b/platform/msm_shared/display.c -@@ -30,12 +30,24 @@ - #include - #include - #include -+#include - #include - #include -+#include -+#include -+#include - - static struct msm_fb_panel_data *panel; - - extern int lvds_on(struct msm_fb_panel_data *pdata); -+extern int mdp_dsi_cmd_config(struct msm_panel_info *pinfo, struct fbcon_config *fb); -+extern int mdss_hdmi_config(struct msm_panel_info *pinfo, struct fbcon_config *fb); -+extern int mdss_dsi_post_on(struct msm_fb_panel_data *panel); -+extern int mdp_dma_on(struct msm_panel_info *pinfo); -+extern int mipi_cmd_trigger(); -+extern int mdss_hdmi_on(); -+extern int mdss_hdmi_init(); -+extern int mdp_dsi_cmd_off(); - - static int msm_fb_alloc(struct fbcon_config *fb) - { -diff --git a/platform/msm_shared/edp.c b/platform/msm_shared/edp.c -index 017326291..8a5ba0e39 100644 ---- a/platform/msm_shared/edp.c -+++ b/platform/msm_shared/edp.c -@@ -30,6 +30,9 @@ - #include "edp.h" - #include "mdp5.h" - -+extern void edp_phy_vm_pe_init(void); -+extern void edp_aux_enable(void); -+ - #define RGB_COMPONENTS 3 - #define MAX_NUMBER_EDP_LANES 4 - -diff --git a/platform/msm_shared/edp_aux.c b/platform/msm_shared/edp_aux.c -index 3cda4bb3f..9702f28f1 100644 ---- a/platform/msm_shared/edp_aux.c -+++ b/platform/msm_shared/edp_aux.c -@@ -29,6 +29,8 @@ - - #include "edp.h" - -+extern void edp_isr_poll(void); -+ - struct edp_aux_ctrl edpctrl; - - int edp_hpd_done = 0; -diff --git a/platform/msm_shared/edp_phy.c b/platform/msm_shared/edp_phy.c -index b36c4522a..6d68757f5 100644 ---- a/platform/msm_shared/edp_phy.c -+++ b/platform/msm_shared/edp_phy.c -@@ -27,6 +27,7 @@ - * SUCH DAMAGE. - */ - #include "edp.h" -+#include - - /* EDP phy configuration settings */ - -diff --git a/platform/msm_shared/hsusb.c b/platform/msm_shared/hsusb.c -index faf57d996..abcef3ffa 100644 ---- a/platform/msm_shared/hsusb.c -+++ b/platform/msm_shared/hsusb.c -@@ -321,12 +321,12 @@ int udc_request_queue(struct udc_endpoint *ept, struct udc_request *_req) - return -1; - } else { - count ++; -- curr_item->next = PA(item); -+ curr_item->next = (unsigned)PA((unsigned)item); - item->next = TERMINATE; - } - } else - /* Since next TD in chain already exists */ -- item = VA(curr_item->next); -+ item = (struct ept_queue_item *)VA(curr_item->next); - - /* Update TD with transfer information */ - item->info = INFO_BYTES(xfer) | INFO_ACTIVE; -@@ -345,7 +345,7 @@ int udc_request_queue(struct udc_endpoint *ept, struct udc_request *_req) - curr_item->next = TERMINATE; - curr_item->info |= INFO_IOC; - enter_critical_section(); -- ept->head->next = PA(req->item); -+ ept->head->next = (unsigned)PA((unsigned)req->item); - ept->head->info = 0; - ept->req = req; - arch_clean_invalidate_cache_range((addr_t) ept, -@@ -354,7 +354,7 @@ int udc_request_queue(struct udc_endpoint *ept, struct udc_request *_req) - sizeof(struct ept_queue_head)); - arch_clean_invalidate_cache_range((addr_t) ept->req, - sizeof(struct usb_request)); -- arch_clean_invalidate_cache_range((addr_t) VA(req->req.buf), -+ arch_clean_invalidate_cache_range((addr_t) VA((unsigned)req->req.buf), - req->req.length); - - item = req->item; -@@ -364,7 +364,7 @@ int udc_request_queue(struct udc_endpoint *ept, struct udc_request *_req) - if (curr_item->next == TERMINATE) - item = NULL; - else -- item = curr_item->next; -+ item = (struct ept_queue_item *)curr_item->next; - arch_clean_invalidate_cache_range((addr_t) curr_item, - sizeof(struct ept_queue_item)); - } -@@ -391,13 +391,13 @@ static void handle_ept_complete(struct udc_endpoint *ept) - - if(ept->req) - { -- req = VA(ept->req); -+ req = (struct usb_request *)VA((addr_t)ept->req); - arch_invalidate_cache_range((addr_t) ept->req, - sizeof(struct usb_request)); - } - - if (req) { -- item = VA(req->item); -+ item = (struct ept_queue_item *)VA((addr_t)req->item); - /* total transfer length for transacation */ - total_len = req->req.length; - ept->req = 0; -@@ -445,7 +445,7 @@ static void handle_ept_complete(struct udc_endpoint *ept) - actual += MAX_TD_XFER_SIZE - (item->info >> 16) & 0x7FFF; - total_len -= MAX_TD_XFER_SIZE - (item->info >> 16) & 0x7FFF; - /*Move to next item in chain*/ -- item = VA(item->next); -+ item = (struct ept_queue_item *)VA(item->next); - } - } - status = 0; -diff --git a/platform/msm_shared/i2c_qup.c b/platform/msm_shared/i2c_qup.c -index 15b4bac04..0fe45092b 100644 ---- a/platform/msm_shared/i2c_qup.c -+++ b/platform/msm_shared/i2c_qup.c -@@ -48,6 +48,8 @@ - #include - #include - -+extern void clock_config_blsp_i2c(uint8_t blsp_id, uint8_t qup_id); -+ - #if DEBUGLEVEL > INFO - #undef DEBUGLEVEL - #define DEBUGLEVEL INFO -@@ -707,6 +709,7 @@ void qup_i2c_sec_init(struct qup_i2c_dev *dev, uint32_t clk_freq, - mask_interrupt(dev->qup_irq); - } - -+#ifdef GSBI_QUP_IRQ /* qup_i2c_init is used only for msm8x60 */ - struct qup_i2c_dev *qup_i2c_init(uint8_t gsbi_id, unsigned clk_freq, - unsigned src_clk_freq) - { -@@ -744,6 +747,7 @@ struct qup_i2c_dev *qup_i2c_init(uint8_t gsbi_id, unsigned clk_freq, - - return dev; - } -+#endif - - struct qup_i2c_dev *qup_blsp_i2c_init(uint8_t blsp_id, uint8_t qup_id, - uint32_t clk_freq, uint32_t src_clk_freq) -diff --git a/platform/msm_shared/interrupts.c b/platform/msm_shared/interrupts.c -index 9d84bb264..15b0a604b 100644 ---- a/platform/msm_shared/interrupts.c -+++ b/platform/msm_shared/interrupts.c -@@ -33,6 +33,11 @@ - #include - - extern int target_supports_qgic(); -+extern enum handler_return gic_platform_irq(struct arm_iframe *frame); -+extern void gic_platform_fiq(struct arm_iframe *frame); -+extern status_t gic_mask_interrupt(unsigned int vector); -+extern status_t gic_unmask_interrupt(unsigned int vector); -+extern void gic_register_int_handler(unsigned int vector, int_handler func, void *arg); - - enum handler_return platform_irq(struct arm_iframe *frame) - { -diff --git a/platform/msm_shared/mdp5.c b/platform/msm_shared/mdp5.c -index e13afd87c..81c366cc7 100755 ---- a/platform/msm_shared/mdp5.c -+++ b/platform/msm_shared/mdp5.c -@@ -39,6 +39,7 @@ - #include - #include - #include -+#include - - #define MDP_MIN_FETCH 9 - #define MDSS_MDP_MAX_FETCH 12 -@@ -172,7 +173,7 @@ static void mdss_source_pipe_config(struct fbcon_config *fb, struct msm_panel_in - dprintf(SPEW,"%s: src=%x fb_off=%x src_xy=%x dst_xy=%x\n", - __func__, out_size, fb_off, src_xy, dst_xy); - -- writel(fb->base, pipe_base + PIPE_SSPP_SRC0_ADDR); -+ writel((uint32_t)fb->base, pipe_base + PIPE_SSPP_SRC0_ADDR); - writel(stride, pipe_base + PIPE_SSPP_SRC_YSTRIDE); - writel(src_size, pipe_base + PIPE_SSPP_SRC_IMG_SIZE); - writel(out_size, pipe_base + PIPE_SSPP_SRC_SIZE); -@@ -387,11 +388,11 @@ void mdss_intf_tg_setup(struct msm_panel_info *pinfo, uint32_t intf_base) - struct intf_timing_params itp = {0}; - - if (pinfo == NULL) -- return ERR_INVALID_ARGS; -+ return; - - lcdc = &(pinfo->lcdc); - if (lcdc == NULL) -- return ERR_INVALID_ARGS; -+ return; - - adjust_xres = pinfo->xres; - if (pinfo->lcdc.split_display) { -diff --git a/platform/msm_shared/mipi_dsi.c b/platform/msm_shared/mipi_dsi.c -index e44dcd321..7296cefea 100644 ---- a/platform/msm_shared/mipi_dsi.c -+++ b/platform/msm_shared/mipi_dsi.c -@@ -41,12 +41,20 @@ - #include - #include - #include -+#include - - extern void mdp_disable(void); - extern int mipi_dsi_cmd_config(struct fbcon_config mipi_fb_cfg, - unsigned short num_of_lanes); - extern void mdp_shutdown(void); - extern void mdp_start_dma(void); -+extern int mdp_get_revision(); -+ -+extern uint8_t target_panel_auto_detect_enabled(); -+ -+extern int mipi_dsi_phy_init(struct mipi_dsi_panel_config *); -+ -+int mdss_dsi_cmds_rx(uint32_t **rp, int rp_len, int rdbk_len); - - #if (DISPLAY_TYPE_MDSS == 0) - #define MIPI_DSI0_BASE MIPI_DSI_BASE -@@ -198,11 +206,11 @@ int mdss_dual_dsi_cmds_tx(struct mipi_dsi_cmd *cmds, int count) - - #if (DISPLAY_TYPE_MDSS == 1) - /* Align pload at 8 byte boundry */ -- off = pload; -+ off = (uint32_t)pload; - off &= 0x07; - if (off) - off = 8 - off; -- off += pload; -+ off += (uint32_t)pload; - - cm = cmds; - for (i = 0; i < count; i++) { -@@ -280,7 +288,7 @@ int mdss_dsi_cmds_rx(uint32_t **rp, int rp_len, int rdbk_len) - if (rdbk_len > 2) { - /*First 4 bytes + paded bytes will be header next len bytes would be payload */ - for (i = 0; i < rdbk_len; i++) { -- dp = *rp; -+ dp = (char *)*rp; - dp[i] = dp[(res + i) >> 2]; - } - } -@@ -296,11 +304,11 @@ int mipi_dsi_cmds_tx(struct mipi_dsi_cmd *cmds, int count) - uint32_t off; - - /* Align pload at 8 byte boundry */ -- off = pload; -+ off = (uint32_t)pload; - off &= 0x07; - if (off) - off = 8 - off; -- off += pload; -+ off += (uint32_t)pload; - - cm = cmds; - for (i = 0; i < count; i++) { -diff --git a/platform/msm_shared/mipi_dsi_autopll.c b/platform/msm_shared/mipi_dsi_autopll.c -index 4527e339d..96a17dbf8 100755 ---- a/platform/msm_shared/mipi_dsi_autopll.c -+++ b/platform/msm_shared/mipi_dsi_autopll.c -@@ -32,6 +32,9 @@ - #include - #include - #include -+#include -+ -+extern void mdss_dsi_phy_sw_reset(uint32_t ctl_base); - - #define LPFR_LUT_SIZE 10 - -diff --git a/platform/msm_shared/mipi_dsi_phy.c b/platform/msm_shared/mipi_dsi_phy.c -index 9fd69a4aa..e0a8e7aaa 100644 ---- a/platform/msm_shared/mipi_dsi_phy.c -+++ b/platform/msm_shared/mipi_dsi_phy.c -@@ -30,6 +30,10 @@ - #include - #include - #include -+#include -+#include -+ -+extern int mdp_get_revision(); - - #if (DISPLAY_TYPE_MDSS == 0) - #define MIPI_DSI0_BASE MIPI_DSI_BASE -diff --git a/platform/msm_shared/mmc_sdhci.c b/platform/msm_shared/mmc_sdhci.c -index 80919dd94..a5206a515 100644 ---- a/platform/msm_shared/mmc_sdhci.c -+++ b/platform/msm_shared/mmc_sdhci.c -@@ -849,6 +849,8 @@ static uint8_t mmc_card_supports_ddr_mode(struct mmc_card *card) - return 0; - } - -+extern void sdhci_msm_set_mci_clk(struct sdhci_host *host); -+ - /* - * Function : Enable HS200 mode - * Arg : Host, card structure and bus width -@@ -1076,6 +1078,8 @@ uint32_t mmc_set_hs400_mode(struct sdhci_host *host, - return mmc_ret; - } - -+void clock_config_cdc(uint8_t slot); -+ - /* - * Function: mmc_host_init - * Arg : mmc device structure -diff --git a/platform/msm_shared/mmc_wrapper.c b/platform/msm_shared/mmc_wrapper.c -index 9b808b510..a5bf60d2e 100755 ---- a/platform/msm_shared/mmc_wrapper.c -+++ b/platform/msm_shared/mmc_wrapper.c -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - - /* - * Weak function for UFS. -diff --git a/platform/msm_shared/partition_parser.c b/platform/msm_shared/partition_parser.c -index 0dc62970b..b40e3ed1b 100644 ---- a/platform/msm_shared/partition_parser.c -+++ b/platform/msm_shared/partition_parser.c -@@ -684,12 +684,12 @@ patch_gpt(uint8_t *gptImage, uint64_t density, uint32_t array_size, - array_size, (long long)(card_size_sec - 34)); - - /* Updating CRC of the Partition entry array in both headers */ -- partition_entry_array_start = primary_gpt_header + block_size; -- crc_value = calculate_crc32(partition_entry_array_start, -+ partition_entry_array_start = (unsigned)(primary_gpt_header + block_size); -+ crc_value = calculate_crc32((unsigned char *)partition_entry_array_start, - max_part_count * part_entry_size); - PUT_LONG(primary_gpt_header + PARTITION_CRC_OFFSET, crc_value); - -- crc_value = calculate_crc32(partition_entry_array_start + array_size, -+ crc_value = calculate_crc32((unsigned char *)(partition_entry_array_start + array_size), - max_part_count * part_entry_size); - PUT_LONG(secondary_gpt_header + PARTITION_CRC_OFFSET, crc_value); - -@@ -796,7 +796,7 @@ static unsigned int write_gpt(uint32_t size, uint8_t *gptImage, uint32_t block_s - } - - /* Writing the partition entries array for the primary header */ -- partition_entry_array_start = primary_gpt_header + block_size; -+ partition_entry_array_start = (unsigned)(primary_gpt_header + block_size); - ret = write_gpt_partition_array(primary_gpt_header, - partition_entry_array_start, - partition_entry_array_size, block_size); -@@ -807,8 +807,8 @@ static unsigned int write_gpt(uint32_t size, uint8_t *gptImage, uint32_t block_s - } - - /*Writing the partition entries array for the backup header */ -- partition_entry_array_start = primary_gpt_header + block_size + -- partition_entry_array_size; -+ partition_entry_array_start = (unsigned)(primary_gpt_header + block_size + -+ partition_entry_array_size); - ret = write_gpt_partition_array(secondary_gpt_header, - partition_entry_array_start, - partition_entry_array_size, block_size); -diff --git a/platform/msm_shared/qpic_nand.c b/platform/msm_shared/qpic_nand.c -index 3dc759d95..b3dda9ad2 100644 ---- a/platform/msm_shared/qpic_nand.c -+++ b/platform/msm_shared/qpic_nand.c -@@ -1494,7 +1494,7 @@ qpic_nand_read_page(uint32_t page, unsigned char* buffer, unsigned char* sparead - - bam_add_cmd_element(cmd_list_ptr, NAND_FLASH_STATUS, (uint32_t)PA((addr_t)&(flash_sts[i])), CE_READ_TYPE); - -- cmd_list_temp = cmd_list_ptr; -+ cmd_list_temp = (uint32_t *)cmd_list_ptr; - - cmd_list_ptr++; - -diff --git a/platform/msm_shared/reboot.c b/platform/msm_shared/reboot.c -index 4c21d1179..1bdca346c 100644 ---- a/platform/msm_shared/reboot.c -+++ b/platform/msm_shared/reboot.c -@@ -38,6 +38,8 @@ - #include - #include - -+extern void pmic_reset_configure(uint8_t reset_type); -+ - #if USER_FORCE_RESET_SUPPORT - /* Return 1 if it is a force resin triggered by user. */ - uint32_t is_user_force_reset(void) -diff --git a/platform/msm_shared/scm.c b/platform/msm_shared/scm.c -index 334bca485..d96ab0e2a 100644 ---- a/platform/msm_shared/scm.c -+++ b/platform/msm_shared/scm.c -@@ -33,6 +33,7 @@ - #include - #include - #include -+#include - #include "scm.h" - - #pragma GCC optimize ("O0") -@@ -192,7 +193,7 @@ static int scm_call_atomic(uint32_t svc, uint32_t cmd, uint32_t arg1) - { - uint32_t context_id; - register uint32_t r0 __asm__("r0") = SCM_ATOMIC(svc, cmd, 1); -- register uint32_t r1 __asm__("r1") = &context_id; -+ register uint32_t r1 __asm__("r1") = (uint32_t)&context_id; - register uint32_t r2 __asm__("r2") = arg1; - - __asm__ volatile( -@@ -221,7 +222,7 @@ int scm_call_atomic2(uint32_t svc, uint32_t cmd, uint32_t arg1, uint32_t arg2) - { - int context_id; - register uint32_t r0 __asm__("r0") = SCM_ATOMIC(svc, cmd, 2); -- register uint32_t r1 __asm__("r1") = &context_id; -+ register uint32_t r1 __asm__("r1") = (uint32_t)&context_id; - register uint32_t r2 __asm__("r2") = arg1; - register uint32_t r3 __asm__("r3") = arg2; - -@@ -443,7 +444,7 @@ static int ssd_image_is_encrypted(uint32_t ** img_ptr, uint32_t * img_len_ptr, u - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_SSD, SSD_PARSE_MD_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x2,SMC_PARAM_TYPE_VALUE,SMC_PARAM_TYPE_BUFFER_READWRITE); - scm_arg.x2 = parse_req.md_len; -- scm_arg.x3 = parse_req.md; -+ scm_arg.x3 = (uint32_t)parse_req.md; - scm_arg.atomic = true; - - ret = scm_call2(&scm_arg, &scm_ret); -@@ -529,7 +530,7 @@ int decrypt_scm_v2(uint32_t ** img_ptr, uint32_t * img_len_ptr) - scm_arg.x2 = decrypt_req.md_ctx_id; - scm_arg.x3 = decrypt_req.last_frag; - scm_arg.x4 = decrypt_req.frag_len; -- scm_arg.x5[0] = decrypt_req.frag; -+ scm_arg.x5[0] = (uint32_t)decrypt_req.frag; - - ret = scm_call2(&scm_arg, &scm_ret); - decrypt_rsp.status = scm_ret.x1; -@@ -672,7 +673,7 @@ int scm_protect_keystore(uint32_t * img_ptr, uint32_t img_len) - { - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_SSD, SSD_PROTECT_KEYSTORE_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x2,SMC_PARAM_TYPE_BUFFER_READWRITE,SMC_PARAM_TYPE_VALUE); -- scm_arg.x2 = protect_req.keystore_ptr; -+ scm_arg.x2 = (uint32_t)protect_req.keystore_ptr; - scm_arg.x3 = protect_req.keystore_len; - - ret = scm_call2(&scm_arg, &scm_ret); -@@ -723,7 +724,7 @@ void set_tamper_fuse_cmd() - { - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_FUSE, SCM_BLOW_SW_FUSE_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x2,SMC_PARAM_TYPE_BUFFER_READWRITE,SMC_PARAM_TYPE_VALUE); -- scm_arg.x2 = cmd_buf; -+ scm_arg.x2 = (uint32_t)cmd_buf; - scm_arg.x3 = cmd_len; - - scm_call2(&scm_arg, NULL); -@@ -763,7 +764,7 @@ uint8_t get_tamper_fuse_cmd() - { - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_FUSE, SCM_IS_SW_FUSE_BLOWN_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x2,SMC_PARAM_TYPE_BUFFER_READWRITE,SMC_PARAM_TYPE_VALUE); -- scm_arg.x2 = cmd_buf; -+ scm_arg.x2 = (uint32_t)cmd_buf; - scm_arg.x3 = cmd_len; - - scm_call2(&scm_arg, &scm_ret); -@@ -815,7 +816,7 @@ void save_kernel_hash_cmd(void *digest) - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_ES, SCM_SAVE_PARTITION_HASH_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x3, 0, SMC_PARAM_TYPE_BUFFER_READWRITE); - scm_arg.x2 = req.partition_id; -- scm_arg.x3 = (uint8_t *)&req.digest; -+ scm_arg.x3 = (uint32_t)(uint8_t *)&req.digest; - scm_arg.x4 = sizeof(req.digest); - - if (scm_call2(&scm_arg, NULL)) -@@ -1046,7 +1047,7 @@ void scm_elexec_call(paddr_t kernel_entry, paddr_t dtb_offset) - { - scm_arg.x0 = MAKE_SIP_SCM_CMD(SCM_SVC_MILESTONE_32_64_ID, SCM_SVC_MILESTONE_CMD_ID); - scm_arg.x1 = MAKE_SCM_ARGS(0x2, SMC_PARAM_TYPE_BUFFER_READ); -- scm_arg.x2 = (void *)¶m; -+ scm_arg.x2 = (uint32_t)¶m; - scm_arg.x3 = sizeof(el1_system_param); - - /* First try a hypervisor call to jump to EL2 if supported */ -@@ -1279,7 +1280,7 @@ uint32_t is_secure_boot_enable() - resp = memalign(CACHE_LINE,(2 *sizeof(uint32_t))); - ASSERT(resp); - if (!scm_arm_support) { -- ret = scm_call_atomic2(TZBSP_SVC_INFO, IS_SECURE_BOOT_ENABLED, resp, (2 * sizeof(uint32_t))); -+ ret = scm_call_atomic2(TZBSP_SVC_INFO, IS_SECURE_BOOT_ENABLED, (uint32_t)resp, (2 * sizeof(uint32_t))); - } else { - scm_arg.x0 = MAKE_SIP_SCM_CMD(TZBSP_SVC_INFO, IS_SECURE_BOOT_ENABLED); - ret = scm_call2(&scm_arg, &scm_ret); -diff --git a/platform/msm_shared/sdhci_msm.c b/platform/msm_shared/sdhci_msm.c -index d72d90df6..0e053bf3d 100644 ---- a/platform/msm_shared/sdhci_msm.c -+++ b/platform/msm_shared/sdhci_msm.c -@@ -77,10 +77,11 @@ static const uint32_t tuning_block_128[] = { - * Once we receive the interrupt, we will ack the power control - * register that we have successfully completed pmic transactions - */ --static enum handler_return sdhci_int_handler(struct sdhci_msm_data *data) -+static enum handler_return sdhci_int_handler(void *vdata) - { - uint32_t ack; - uint32_t status; -+ struct sdhci_msm_data *data = (struct sdhci_msm_data *)vdata; - - /* - * Read the mask register to check if BUS & IO level -diff --git a/platform/msm_shared/shutdown_detect.c b/platform/msm_shared/shutdown_detect.c -index a51c9ae99..0f0e3a9e8 100644 ---- a/platform/msm_shared/shutdown_detect.c -+++ b/platform/msm_shared/shutdown_detect.c -@@ -33,8 +33,11 @@ - #include - #include - #include -+#include - #include - -+extern uint32_t platform_get_sclk_count(void); -+ - /* sleep clock is 32.768 khz, 0x8000 count per second */ - #define MPM_SLEEP_TIMETICK_COUNT 0x8000 - #define PWRKEY_LONG_PRESS_COUNT 0xC000 -@@ -82,8 +85,7 @@ static uint32_t is_pwrkey_pon_reason() - * Shutdown the device if power key is release before - * (PWRKEY_LONG_PRESS_COUNT/MPM_SLEEP_TIMETICK_COUNT) seconds. - */ --static enum handler_return long_press_pwrkey_timer_func(struct timer *p_timer, -- void *arg) -+static enum handler_return long_press_pwrkey_timer_func(struct timer *p_timer, unsigned long arg0, void *arg1) - { - uint32_t sclk_count = platform_get_sclk_count(); - -diff --git a/platform/msm_shared/smem.c b/platform/msm_shared/smem.c -index 04a801802..1bdea1d26 100644 ---- a/platform/msm_shared/smem.c -+++ b/platform/msm_shared/smem.c -@@ -136,11 +136,11 @@ void* smem_get_alloc_entry(smem_mem_type_t type, uint32_t* size) - smem = (struct smem *)smem_addr; - - if (type < SMEM_FIRST_VALID_TYPE || type > SMEM_LAST_VALID_TYPE) -- return 1; -+ return ret; - - ainfo = &smem->alloc_info[type]; - if (readl(&ainfo->allocated) == 0) -- return 1; -+ return ret; - - *size = readl(&ainfo->size); - base_ext = readl(&ainfo->base_ext); -@@ -148,7 +148,7 @@ void* smem_get_alloc_entry(smem_mem_type_t type, uint32_t* size) - - if(base_ext) - { -- ret = base_ext + offset; -+ ret = (void *)base_ext + offset; - } - else - { -diff --git a/platform/msm_shared/spmi.c b/platform/msm_shared/spmi.c -index 6d486b729..6089ed0d3 100644 ---- a/platform/msm_shared/spmi.c -+++ b/platform/msm_shared/spmi.c -@@ -26,10 +26,12 @@ - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -+#include "sys/types.h" - #include - #include - #include - #include -+#include - #include - #include - #include -@@ -127,7 +129,7 @@ static void write_wdata_from_array(uint8_t *array, - unsigned int pmic_arb_write_cmd(struct pmic_arb_cmd *cmd, - struct pmic_arb_param *param) - { -- uint32_t bytes_written = 0; -+ uint8_t bytes_written = 0; - uint32_t error; - uint32_t val = 0; - -@@ -358,7 +360,7 @@ int spmi_acc_irq(uint32_t periph_acc_irq, uint32_t status) - return 0; - } - --void spmi_irq() -+enum handler_return spmi_irq(void *) - { - int i; - uint32_t status; -@@ -372,9 +374,11 @@ void spmi_irq() - if (status) - if (!spmi_acc_irq(i, status)) - /* Not the correct interrupt, continue to wait */ -- return; -+ return INT_NO_RESCHEDULE; - } - mask_interrupt(EE0_KRAIT_HLOS_SPMI_PERIPH_IRQ); -+ -+ return INT_NO_RESCHEDULE; - } - - /* Enable interrupts on a particular peripheral: periph_id */ -diff --git a/platform/msm_shared/usb30_dwc_hw.h b/platform/msm_shared/usb30_dwc_hw.h -index 56b32bac1..428f3fc4c 100644 ---- a/platform/msm_shared/usb30_dwc_hw.h -+++ b/platform/msm_shared/usb30_dwc_hw.h -@@ -36,6 +36,7 @@ void dwc_ep_cmd_stall(dwc_dev_t *dev, uint8_t ep_phy_num); - void dwc_ep_cmd_start_new_config(dwc_dev_t *dev, - uint8_t ep_phy_num, - uint8_t resource_idx); -+void dwc_ep_cmd_clear_stall(dwc_dev_t *dev, uint8_t ep_phy_num); - - void dwc_ep_enable(dwc_dev_t *dev, uint8_t ep_phy_num); - void dwc_ep_disable(dwc_dev_t *dev, uint8_t ep_phy_num); -diff --git a/platform/msm_shared/usb30_udc.c b/platform/msm_shared/usb30_udc.c -index 619289917..0bd548263 100644 ---- a/platform/msm_shared/usb30_udc.c -+++ b/platform/msm_shared/usb30_udc.c -@@ -47,6 +47,8 @@ - #include - #include - -+#include "usb30_dwc_hw.h" -+ - //#define DEBUG_USB - - #ifdef DEBUG_USB -diff --git a/target/msm8226/init.c b/target/msm8226/init.c -index 320a1bd13..684633dcd 100644 ---- a/target/msm8226/init.c -+++ b/target/msm8226/init.c -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -49,6 +50,9 @@ - #include - #include - #include -+#include -+ -+extern void crypto_eng_cleanup(); - - #if LONG_PRESS_POWER_ON - #include -diff --git a/target/msm8916/init.c b/target/msm8916/init.c -index e0943d546..3de479b0e 100644 ---- a/target/msm8916/init.c -+++ b/target/msm8916/init.c -@@ -46,12 +46,15 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include - #include -+#include -+#include - #include - - #if LONG_PRESS_POWER_ON -@@ -96,6 +99,7 @@ static uint32_t mmc_sdc_pwrctl_irq[] = - { SDCC1_PWRCTL_IRQ, SDCC2_PWRCTL_IRQ }; - - extern void target_try_load_qhypstub(); -+extern void crypto_eng_cleanup(); - - void target_early_init(void) - { -diff --git a/target/msm8974/init.c b/target/msm8974/init.c -index 41ea1976b..beac1ffdf 100644 ---- a/target/msm8974/init.c -+++ b/target/msm8974/init.c -@@ -49,7 +49,15 @@ - #include - #include - #include -+#include - #include -+#include -+#include -+ -+extern int platform_is_8974(); -+extern int platform_is_8974ac(); -+extern int platform_is_8974Pro(); -+extern void crypto_eng_cleanup(); - - #define HW_PLATFORM_8994_INTERPOSER 0x3 - --- -2.43.2 - diff --git a/main/lk2nd/0001-doc-dts-msm8974-Remove-hammerhead-from-qcdtbs-and-do.patch b/main/lk2nd/0001-doc-dts-msm8974-Remove-hammerhead-from-qcdtbs-and-do.patch new file mode 100644 index 000000000..002296d61 --- /dev/null +++ b/main/lk2nd/0001-doc-dts-msm8974-Remove-hammerhead-from-qcdtbs-and-do.patch @@ -0,0 +1,58 @@ +From 2511df692a8e230a2f6d00b76be3d9a9f791a459 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Barnab=C3=A1s=20Cz=C3=A9m=C3=A1n?= +Date: Wed, 16 Oct 2024 22:53:32 +0200 +Subject: [PATCH] doc/dts: msm8974: Remove hammerhead from qcdtbs and document + the quirks + +LG Nexus 5 (hammerhead) should not be added for QCDTBS list it breaks +other devices. It works with ADTBS and QCDTBS list should be empty. +--- + Documentation/devices.md | 2 +- + lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts | 5 +++++ + lk2nd/device/dts/msm8974/rules.mk | 1 - + 3 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Documentation/devices.md b/Documentation/devices.md +index 86162199b..5b71f6bf2 100644 +--- a/Documentation/devices.md ++++ b/Documentation/devices.md +@@ -121,7 +121,7 @@ + - Fairphone 2 - FP2 + - HTC One M8 - m8 + - LG G3 - D855 +-- LG Google Nexus 5 - hammerhead D820, D821 ++- LG Google Nexus 5 - hammerhead D820, D821 (quirky - see comment in `lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts`) + - Motorola Moto X 2014 - victara + - OnePlus One - bacon + - Samsung Galaxy Note 3 - SM-N9005 +diff --git a/lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts b/lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts +index 10104253e..ea1790961 100644 +--- a/lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts ++++ b/lk2nd/device/dts/msm8974/msm8974-lge-hammerhead.dts +@@ -3,6 +3,11 @@ + #include + #include + ++/* ++ * To build for hammerhead, add LK2ND_QCDTBS="" to your make cmdline ++ * hammerhead does not work with qcdtbs enabled. ++ */ ++ + / { + qcom,msm-id = ; + }; +diff --git a/lk2nd/device/dts/msm8974/rules.mk b/lk2nd/device/dts/msm8974/rules.mk +index 1a2ffc24b..1358585b6 100644 +--- a/lk2nd/device/dts/msm8974/rules.mk ++++ b/lk2nd/device/dts/msm8974/rules.mk +@@ -7,7 +7,6 @@ QCDTBS += \ + $(LOCAL_DIR)/msm8974pro-ac-pm8941-mtp.dtb \ + $(LOCAL_DIR)/msm8974-htc-m8.dtb \ + $(LOCAL_DIR)/msm8974-lge-d855.dtb \ +- $(LOCAL_DIR)/msm8974-lge-hammerhead.dtb \ + + ADTBS += \ + $(LOCAL_DIR)/msm8974-lge-hammerhead.dtb \ +-- +2.47.0 + diff --git a/main/lk2nd/APKBUILD b/main/lk2nd/APKBUILD index f5e768bb2..fa4d814b4 100644 --- a/main/lk2nd/APKBUILD +++ b/main/lk2nd/APKBUILD @@ -1,15 +1,23 @@ # Maintainer: Alexey Minnekhanov pkgname=lk2nd -pkgver=0.16.0 +pkgver=19.0 pkgrel=0 pkgdesc="Secondary little kernel (lk) bootloader for several Qualcomm devices" arch="armv7 aarch64" url="https://github.com/msm8916-mainline/lk2nd" license="MIT AND BSD-3-Clause AND GPL-2.0-only" -makedepends="dtc dtc-dev gcc-arm-none-eabi python3 py3-libfdt" +makedepends=" + dtc + dtc-dev + gcc-arm-none-eabi + python3 + py3-asn1-modules + py3-libfdt + py3-pycryptodome +" source=" $pkgname-$pkgver.tar.gz::https://github.com/msm8916-mainline/lk2nd/archive/refs/tags/$pkgver.tar.gz - 0001-build-fixes.patch + 0001-doc-dts-msm8974-Remove-hammerhead-from-qcdtbs-and-do.patch " options="!check !archcheck !tracedeps !strip pmb:cross-native" # This APKBUILD builds bare metal executable; options are very specific! @@ -21,17 +29,19 @@ options="!check !archcheck !tracedeps !strip pmb:cross-native" subpackages=" $pkgname-msm8916 - $pkgname-msm8916-appended:msm8916_appended + $pkgname-msm8952 + $pkgname-msm8952-xiaomi-land:msm8952_xiaomi_land + $pkgname-msm8953 + $pkgname-msm8953-signed:msm8953_signed " if [ "$CARCH" = "armv7" ]; then subpackages=" $subpackages $pkgname-msm8226 - $pkgname-msm8226-appended:msm8226_appended $pkgname-msm8226-htc-memul:msm8226_htc_memul $pkgname-msm8974 - $pkgname-msm8974-appended:msm8974_appended + $pkgname-msm8974-lg-hammerhead:msm8974_lg_hammerhead " fi @@ -58,8 +68,13 @@ _build() { build() { _build lk2nd-msm8916 + _build lk2nd-msm8952 + _build lk2nd-msm8952 BOOTLOADER_OUT=xiaomi-land LK2ND_DTBS="" LK2ND_ADTBS="msm8937-xiaomi-land.dtb" + _build lk2nd-msm8953 + _build lk2nd-msm8953 BOOTLOADER_OUT=msm8953-signed SIGN_BOOTIMG=1 if [ "$CARCH" = "armv7" ]; then _build lk2nd-msm8974 + _build lk2nd-msm8974 BOOTLOADER_OUT=lg-hammerhead LK2ND_QCDTBS="" _build lk2nd-msm8226 _build lk2nd-msm8226 BOOTLOADER_OUT=htc-memul SCRATCH_ADDR=0x20000000 SCRATCH_ADDR_512MAP=0x20000000 SCRATCH_SIZE_512MAP=0x10000000 fi @@ -75,9 +90,24 @@ msm8916() { "$subpkgdir"/boot } -msm8916_appended() { - install -Dm644 "$builddir"/build-lk2nd-msm8916/lk2nd-appended-dtb.img \ - "$subpkgdir"/boot/lk2nd.img +msm8952() { + install -Dm644 "$builddir"/build-lk2nd-msm8952/lk2nd.img -t \ + "$subpkgdir"/boot +} + +msm8952_xiaomi_land() { + install -Dm644 "$builddir"/xiaomi-land/build-lk2nd-msm8952/lk2nd.img -t \ + "$subpkgdir"/boot +} + +msm8953() { + install -Dm644 "$builddir"/build-lk2nd-msm8953/lk2nd.img -t \ + "$subpkgdir"/boot +} + +msm8953_signed() { + install -Dm644 "$builddir"/msm8953-signed/build-lk2nd-msm8953/lk2nd.img -t \ + "$subpkgdir"/boot } msm8974() { @@ -85,9 +115,9 @@ msm8974() { "$subpkgdir"/boot } -msm8974_appended() { - install -Dm644 "$builddir"/build-lk2nd-msm8974/lk2nd-appended-dtb.img \ - "$subpkgdir"/boot/lk2nd.img +msm8974_lg_hammerhead() { + install -Dm644 "$builddir"/lg-hammerhead/build-lk2nd-msm8974/lk2nd.img -t \ + "$subpkgdir"/boot } msm8226() { @@ -95,17 +125,12 @@ msm8226() { "$subpkgdir"/boot/lk2nd.img } -msm8226_appended() { - install -Dm644 "$builddir"/build-lk2nd-msm8226/lk2nd-appended-dtb.img \ - "$subpkgdir"/boot/lk2nd.img -} - msm8226_htc_memul() { install -Dm644 "$builddir"/htc-memul/build-lk2nd-msm8226/lk2nd.img \ "$subpkgdir"/boot/lk2nd.img } sha512sums=" -e3708b02f7bf677c60b9f09e75d70c05438466c62378294b31109c9085bfaf5e25598c91a841dc2756367b5cb069e10d9df56c1d1b174ba07b8fd2017487c5c2 lk2nd-0.16.0.tar.gz -e0ff876f69950cd3026d0168edc7e32d1f671a448153ee3c1dcf8906aed3c67b91bdd3e1ea73e789c7d85fbf2bebd42054dd89ae486d1921df456f606a7e82d2 0001-build-fixes.patch +5c7b69277b255b4e29849940b9eca90de8d21c5851719bdb519c1323844014ac6519995c43ed5ea874a64df5845305df3fcf56b141e782d77a4c2cac3deda82a lk2nd-19.0.tar.gz +7aa4b7c98e990d3f2f44be2e24873829b75aa72b423966fb20b26d8c4fede9ce04495f8f37df54ae817297986bcb86ae7879174ca1d255c12b25656dbacaa62b 0001-doc-dts-msm8974-Remove-hammerhead-from-qcdtbs-and-do.patch "