1.3.1: updated
* sharp display fix * added patches
This commit is contained in:
parent
fc88e6ffb9
commit
cb8df35955
@ -680,6 +680,7 @@ void aboot_init(const struct app_descriptor *app)
|
||||
"to fastboot mode.\n");
|
||||
|
||||
fastboot:
|
||||
htcleo_fastboot_init();
|
||||
|
||||
if(!usb_init)
|
||||
udc_init(&surf_udc_device);
|
||||
|
@ -223,11 +223,6 @@ int update_firmware_image (struct update_header *header, char *name)
|
||||
|
||||
int recovery_init (void)
|
||||
{
|
||||
/** cedesmith: we can't update radio like native android phones
|
||||
* so there is no need for misc partition just to boot recovery
|
||||
*/
|
||||
return -1;
|
||||
|
||||
struct recovery_message msg;
|
||||
struct update_header header;
|
||||
char partition_name[32];
|
||||
@ -250,12 +245,15 @@ int recovery_init (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// cedesmith: wince phone update radio and boot loader using spl
|
||||
#ifndef WSPL_VADDR
|
||||
if (!strcmp("update-radio",msg.command)) {
|
||||
valid_command = 1;
|
||||
strcpy(partition_name, "FOTA");
|
||||
}
|
||||
|
||||
//Todo: Add support for bootloader update too.
|
||||
#endif
|
||||
|
||||
if(!valid_command) {
|
||||
//We need not to do anything
|
||||
|
@ -15,7 +15,6 @@ MODULES += dev/fbcon
|
||||
|
||||
OBJS += \
|
||||
$(LOCAL_DIR)/arch_init.o \
|
||||
$(LOCAL_DIR)/platform.o \
|
||||
$(LOCAL_DIR)/interrupts.o \
|
||||
$(LOCAL_DIR)/gpio.o \
|
||||
$(LOCAL_DIR)/acpuclock.o
|
||||
|
@ -63,6 +63,16 @@ htcleo_boot_s:
|
||||
|
||||
.ltorg
|
||||
|
||||
.global htcleo_flash
|
||||
htcleo_flash:
|
||||
ldr r4, =0xa9000864
|
||||
ldr r5, =0xa9000814
|
||||
orr r6, r4, #0x200000
|
||||
str r6, [r5, #0]
|
||||
bx lr
|
||||
.ltorg
|
||||
|
||||
|
||||
// code to put at 0, get opcode from debug.lst
|
||||
.global pc_reset_vector
|
||||
.global pc_reset_vector_end
|
||||
|
@ -35,12 +35,13 @@
|
||||
#define LCDC_FB_WIDTH 480
|
||||
#define LCDC_FB_HEIGHT 800
|
||||
|
||||
#define LCDC_HSYNC_PULSE_WIDTH_DCLK 60
|
||||
#define LCDC_HSYNC_BACK_PORCH_DCLK 144
|
||||
#define LCDC_HSYNC_FRONT_PORCH_DCLK 33
|
||||
#define LCDC_HSYNC_PULSE_WIDTH_DCLK 2
|
||||
#define LCDC_HSYNC_BACK_PORCH_DCLK 30
|
||||
#define LCDC_HSYNC_FRONT_PORCH_DCLK 2
|
||||
#define LCDC_HSYNC_SKEW_DCLK 0
|
||||
|
||||
#define LCDC_VSYNC_PULSE_WIDTH_LINES 2
|
||||
#define LCDC_VSYNC_BACK_PORCH_LINES 2
|
||||
#define LCDC_VSYNC_BACK_PORCH_LINES 5
|
||||
#define LCDC_VSYNC_FRONT_PORCH_LINES 2
|
||||
|
||||
#endif
|
||||
|
@ -90,6 +90,7 @@ extern unsigned boot_into_recovery;
|
||||
|
||||
void keypad_init(void);
|
||||
void display_init(void);
|
||||
void display_lk_version();
|
||||
void htcleo_ptable_dump(struct ptable *ptable);
|
||||
void cmd_dmesg(const char *arg, void *data, unsigned sz);
|
||||
void reboot(unsigned reboot_reason);
|
||||
@ -110,8 +111,8 @@ void target_init(void)
|
||||
if (keys_get_state(keys[i]) != 0)
|
||||
{
|
||||
display_init();
|
||||
_dputs("cedesmith's LK (CLK) v1.1\n");
|
||||
dprintf(ALWAYS,"key %d pressed\n", i);
|
||||
display_lk_version();
|
||||
//dprintf(ALWAYS,"key %d pressed\n", i);
|
||||
break;
|
||||
}
|
||||
dprintf(INFO, "htcleo_init\n");
|
||||
@ -175,6 +176,23 @@ void target_init(void)
|
||||
htcleo_ptable_dump(&flash_ptable);
|
||||
flash_set_ptable(&flash_ptable);
|
||||
}
|
||||
void display_lk_version()
|
||||
{
|
||||
_dputs("cedesmith's LK (CLK) v1.3\n");
|
||||
}
|
||||
void htcleo_fastboot_init()
|
||||
{
|
||||
// off charge and recovery boot failed, reboot to normal mode
|
||||
if(get_boot_reason()==2) reboot(0);
|
||||
|
||||
// display not initialized
|
||||
if(fbcon_display()==NULL)
|
||||
{
|
||||
display_init();
|
||||
display_lk_version();
|
||||
htcleo_ptable_dump(&flash_ptable);
|
||||
}
|
||||
}
|
||||
void target_early_init(void)
|
||||
{
|
||||
//cedesmith: write reset vector while we can as MPU kicks in after flash_init();
|
||||
|
39
lk/target/htcleo/platform.c
Normal file
39
lk/target/htcleo/platform.c
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
#include <reg.h>
|
||||
#include <dev/fbcon.h>
|
||||
#include "target/display.h"
|
||||
#include <debug.h>
|
||||
|
||||
void platform_init_interrupts(void);
|
||||
void platform_init_timer();
|
||||
void platform_early_init(void)
|
||||
{
|
||||
platform_init_interrupts();
|
||||
platform_init_timer();
|
||||
}
|
||||
|
||||
void platform_init(void)
|
||||
{
|
||||
dprintf(INFO, "platform_init()\n");
|
||||
}
|
||||
|
||||
#define FB_FORMAT_RGB565 0
|
||||
#define LCDC_FB_BPP 16
|
||||
#define MSM_MDP_BASE1 0xAA200000
|
||||
|
||||
static struct fbcon_config fb_cfg = {
|
||||
.height = LCDC_FB_HEIGHT,
|
||||
.width = LCDC_FB_WIDTH,
|
||||
.stride = LCDC_FB_WIDTH,
|
||||
.format = FB_FORMAT_RGB565,
|
||||
.bpp = LCDC_FB_BPP,
|
||||
.update_start = NULL,
|
||||
.update_done = NULL,
|
||||
};
|
||||
void display_init(void)
|
||||
{
|
||||
fb_cfg.base = (unsigned*)readl( MSM_MDP_BASE1 + 0x90008);
|
||||
fbcon_setup(&fb_cfg);
|
||||
fbcon_clear();
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ PLATFORM := qsd8k
|
||||
|
||||
#define system partition size (in MB), if not defined my custom (from magldr) layout is used. see init.c
|
||||
#DEFINES += SYSTEM_PARTITION_SIZE=150
|
||||
DEFINES += SYSTEM_PARTITION_SIZE=250
|
||||
#DEFINES += SYSTEM_PARTITION_SIZE=250
|
||||
|
||||
#cedesmith note: MEMBASE requires edit in platform/qsd8k/rules.mk
|
||||
#MEMBASE := 0x20000000
|
||||
@ -67,6 +67,8 @@ OBJS += \
|
||||
$(LOCAL_DIR)/keypad.o \
|
||||
$(LOCAL_DIR)/atags.o
|
||||
|
||||
OBJS += $(LOCAL_DIR)/htcleo_boot.o \
|
||||
$(LOCAL_DIR)/htcleo_boot_s.o
|
||||
OBJS += \
|
||||
$(LOCAL_DIR)/htcleo_boot.o \
|
||||
$(LOCAL_DIR)/htcleo_boot_s.o\
|
||||
$(LOCAL_DIR)/platform.o
|
||||
|
||||
|
41
patches/CWM_off_charge.patch
Normal file
41
patches/CWM_off_charge.patch
Normal file
@ -0,0 +1,41 @@
|
||||
diff --git a/extendedcommands.c b/extendedcommands.c
|
||||
index 1ce3bf1..2562e6c 100644
|
||||
--- a/extendedcommands.c
|
||||
+++ b/extendedcommands.c
|
||||
@@ -1110,21 +1110,25 @@ int volume_main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
void handle_chargemode() {
|
||||
+ // old code to read /proc/cmdline was broken because file size is always 0 so file_data was always empty string
|
||||
const char* filename = "/proc/cmdline";
|
||||
- struct stat file_info;
|
||||
- if (0 != stat(filename, &file_info))
|
||||
- return;
|
||||
-
|
||||
- int file_len = file_info.st_size;
|
||||
- char* file_data = (char*)malloc(file_len + 1);
|
||||
FILE *file = fopen(filename, "rb");
|
||||
if (file == NULL)
|
||||
return;
|
||||
- fread(file_data, file_len, 1, file);
|
||||
- // supposedly not necessary, but let's be safe.
|
||||
+ char file_data[1024];
|
||||
+ int file_len=fread(file_data, 1, 1023, file);
|
||||
file_data[file_len] = '\0';
|
||||
fclose(file);
|
||||
-
|
||||
+
|
||||
if (strstr(file_data, "androidboot.mode=offmode_charging") != NULL)
|
||||
- reboot(RB_POWER_OFF);
|
||||
+ {
|
||||
+ // let recovery kernel charge the battery, reboot on any key press so Android will start as user would expect
|
||||
+ ev_init();
|
||||
+ struct input_event ev;
|
||||
+ do
|
||||
+ {
|
||||
+ ev_get(&ev, 0);
|
||||
+ } while (ev.type != EV_KEY || ev.code > KEY_MAX);
|
||||
+ reboot(RB_AUTOBOOT);
|
||||
+ }
|
||||
}
|
||||
\ No newline at end of file
|
32
patches/cLK_power_collapse.patch
Normal file
32
patches/cLK_power_collapse.patch
Normal file
@ -0,0 +1,32 @@
|
||||
diff --git a/arch/arm/mach-msm/board-htcleo.c b/arch/arm/mach-msm/board-htcleo.c
|
||||
index e13205b..ee7680e 100644
|
||||
--- a/arch/arm/mach-msm/board-htcleo.c
|
||||
+++ b/arch/arm/mach-msm/board-htcleo.c
|
||||
@@ -87,6 +87,7 @@ static int __init parse_tag_nand_boot(const struct tag *tag)
|
||||
{
|
||||
struct tag_magldr_entry *mentry = (struct tag_magldr_entry *)(&tag->u);
|
||||
nand_boot = !(unsigned int)mentry->fNoNandBoot;
|
||||
+ if(*((unsigned*)&tag->u)==0x004b4c63) nand_boot = 2; // cLK signature
|
||||
pr_info("Nand Boot: %d\n", nand_boot);
|
||||
return 0;
|
||||
}
|
||||
diff --git a/arch/arm/mach-msm/pm.c b/arch/arm/mach-msm/pm.c
|
||||
index 8766174..56ccb2a 100644
|
||||
--- a/arch/arm/mach-msm/pm.c
|
||||
+++ b/arch/arm/mach-msm/pm.c
|
||||
@@ -892,6 +892,15 @@ static int __init msm_pm_init(void)
|
||||
register_reboot_notifier(&msm_reboot_notifier);
|
||||
msm_pm_reset_vector = ioremap(0x0, PAGE_SIZE);
|
||||
|
||||
+#if defined(CONFIG_MACH_HTCLEO)
|
||||
+ // if cLK is bootloader 0x0 is protected and not writtable but cLK changed reset vecotr to jump at address stored at 0x11800004
|
||||
+ if(htcleo_is_nand_boot()==2){
|
||||
+ pr_info("msm_pm: 0x00000000: %x\n", msm_pm_reset_vector[0]);
|
||||
+ pr_info("msm_pm: 0x00000004: %x\n", msm_pm_reset_vector[1]);
|
||||
+ msm_pm_reset_vector = ioremap(0x11800000, PAGE_SIZE);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (msm_pm_reset_vector == NULL) {
|
||||
printk(KERN_ERR "msm_pm_init: failed to map reset vector\n");
|
||||
return -ENODEV;
|
39
patches/off_mode_charging_kernel.patch
Normal file
39
patches/off_mode_charging_kernel.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff --git a/arch/arm/mach-msm/board-htcleo-panel.c b/arch/arm/mach-msm/board-htcleo-panel.c
|
||||
index a7a701d..1b98611 100644
|
||||
--- a/arch/arm/mach-msm/board-htcleo-panel.c
|
||||
+++ b/arch/arm/mach-msm/board-htcleo-panel.c
|
||||
@@ -861,9 +861,17 @@ static void detect_panel_type(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
- printk(" UNKNOWN, stop system now\n");
|
||||
htcleo_panel_type = PANELTYPE_UNKNOWN;
|
||||
- BUG();
|
||||
+ extern int board_mfg_mode(void);
|
||||
+ if(board_mfg_mode()==5)
|
||||
+ {
|
||||
+ printk(" offmode charging, panel is off\n");
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ printk(" UNKNOWN, stop system now\n");
|
||||
+ BUG();
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/arch/arm/mach-msm/devices_htc.c b/arch/arm/mach-msm/devices_htc.c
|
||||
index e5f65e7..6839c0d 100644
|
||||
--- a/arch/arm/mach-msm/devices_htc.c
|
||||
+++ b/arch/arm/mach-msm/devices_htc.c
|
||||
@@ -457,6 +457,10 @@ int __init board_mfg_mode_init(char *s)
|
||||
mfg_mode = 2;
|
||||
else if (!strcmp(s, "charge"))
|
||||
mfg_mode = 3;
|
||||
+ else if (!strcmp(s, "power_test"))
|
||||
+ mfg_mode = 4;
|
||||
+ else if (!strcmp(s, "offmode_charging"))
|
||||
+ mfg_mode = 5;
|
||||
|
||||
return 1;
|
||||
}
|
@ -1,3 +1,10 @@
|
||||
#compile kernel and make boot.img/recovery.img
|
||||
#make ARCH=arm CROSS_COMPILE=arm-none-eabi-
|
||||
mkbootimg --kernel zImage --ramdisk initrd.gz --cmdline "" --base 0x11800000 -o android_boot.img
|
||||
mkbootimg --base 0x11800000 --cmdline "no_console_suspend=0" --kernel zImage --ramdisk initrd.gz -o android_boot.img
|
||||
|
||||
#create initrd.gz
|
||||
find . | cpio -o -H newc | gzip > ../initrd.gz
|
||||
|
||||
#flash boot img from zImage and initrd.gz
|
||||
fastboot -c "" -b 0x11800000 flash:raw boot zImage initrd.gz
|
Loading…
Reference in New Issue
Block a user