aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/kexecboot/kexecboot-0.4
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/kexecboot/kexecboot-0.4')
-rw-r--r--recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch41
-rw-r--r--recipes/kexecboot/kexecboot-0.4/add-sleep.patch12
-rw-r--r--recipes/kexecboot/kexecboot-0.4/fb-render-16bit.patch21
-rw-r--r--recipes/kexecboot/kexecboot-0.4/graphical-no-devices.patch20
-rw-r--r--recipes/kexecboot/kexecboot-0.4/kexecboot-tosa.patch24
-rw-r--r--recipes/kexecboot/kexecboot-0.4/scan_devices-top.patch39
-rw-r--r--recipes/kexecboot/kexecboot-0.4/silent-output-hack.patch79
-rw-r--r--recipes/kexecboot/kexecboot-0.4/switch-cursor-off.patch11
8 files changed, 247 insertions, 0 deletions
diff --git a/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch b/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch
new file mode 100644
index 0000000000..52619229fd
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch
@@ -0,0 +1,41 @@
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -536,11 +536,23 @@ int main(int argc, char **argv)
+ fread(&evt, sizeof(struct input_event), 1, f);
+ while(evt.type != EV_KEY || evt.value != 0);
+
+- if(evt.code == KEY_UP && choice >0)
+- choice--;
+- if(evt.code == KEY_DOWN && choice < bl->size-1)
+- choice++;
+- // printf("%d %d\n",choice, evt.code);
++ switch (evt.code) {
++ case KEY_UP:
++ if (choice > 0) choice--;
++ break;
++ case KEY_DOWN:
++ if ( choice < (bl->size - 1) ) choice++;
++ break;
++ case KEY_R:
++ /* FIXME: Should work while no boot devices is found */
++ sync();
++ sleep(1);
++ /* if ( -1 == reboot(LINUX_REBOOT_CMD_RESTART) ) { */
++ if ( -1 == reboot(RB_AUTOBOOT) ) {
++ perror("Can't initiate reboot");
++ }
++ break;
++ }
+
+ }while(evt.code != 87 && evt.code != 63);
+ fclose(f);
+--- a/kexecboot.h
++++ b/kexecboot.h
+@@ -29,6 +29,7 @@
+ #include <sys/wait.h>
+ #include <ctype.h>
+ #include <errno.h>
++#include <sys/reboot.h>
+ #include "fb.h"
+ #include "devicescan.h"
+ #include "res/logo-img.h"
diff --git a/recipes/kexecboot/kexecboot-0.4/add-sleep.patch b/recipes/kexecboot/kexecboot-0.4/add-sleep.patch
new file mode 100644
index 0000000000..8f41b0ef10
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/add-sleep.patch
@@ -0,0 +1,12 @@
+--- a/kexecboot.c 2009-01-24 14:11:17.000000000 +0100
++++ b/kexecboot.c 2009-01-24 14:15:03.000000000 +0100
+@@ -427,6 +427,9 @@
+
+ DPRINTF("I'm the init-process!\n");
+
++ /* extra delay for initializing slow SD/CF */
++ sleep(1);
++
+ /* Mount procfs */
+ if ( -1 == mount("proc", "/proc", "proc",
+ 0, NULL) ) {
diff --git a/recipes/kexecboot/kexecboot-0.4/fb-render-16bit.patch b/recipes/kexecboot/kexecboot-0.4/fb-render-16bit.patch
new file mode 100644
index 0000000000..f3405e49d8
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/fb-render-16bit.patch
@@ -0,0 +1,21 @@
+Index: kexecboot-0.4/fb.c
+===================================================================
+--- kexecboot-0.4.orig/fb.c 2009-01-29 22:03:34.000000000 +0000
++++ kexecboot-0.4/fb.c 2009-01-29 22:08:22.000000000 +0000
+@@ -19,7 +19,15 @@
+
+ void fb_render(FB * fb)
+ {
+- memcpy(fb->data, fb->backbuffer, fb->screensize);
++ uint16 *source, *dest;
++ int n = fb->screensize/2;
++
++ source = (uint16 *)fb->backbuffer;
++ dest = (uint16 *)fb->data;
++
++ while (n--) {
++ *dest++ = *source++;
++ }
+ }
+
+ void fb_destroy(FB * fb)
diff --git a/recipes/kexecboot/kexecboot-0.4/graphical-no-devices.patch b/recipes/kexecboot/kexecboot-0.4/graphical-no-devices.patch
new file mode 100644
index 0000000000..b2cb214894
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/graphical-no-devices.patch
@@ -0,0 +1,20 @@
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -66,8 +66,15 @@ void display_menu(FB *fb, struct bootlist *bl, int current)
+ LOGO_IMG_WIDTH,
+ LOGO_IMG_HEIGHT,
+ LOGO_IMG_BYTES_PER_PIXEL, LOGO_IMG_RLE_PIXEL_DATA);
+- fb_draw_text (fb, LOGO_IMG_WIDTH + margin, margin, 0, 0, 0, &radeon_font,
+- "Make your choice by selecting\nan item with the cursor keys\nand press OK to continue");
++ /* If no devices found print a message */
++ if (0 == bl->size) {
++ fb_draw_text (fb, LOGO_IMG_WIDTH + margin, margin, 0, 0, 0, &radeon_font,
++ "No bootable devices found.\nInsert bootable device\nand press 'R' to reboot.");
++ } else {
++ fb_draw_text (fb, LOGO_IMG_WIDTH + margin, margin, 0, 0, 0, &radeon_font,
++ "Make your choice by selecting\nan item with the cursor keys\nand press OK to continue.\nPress 'R' to reboot.");
++ }
++
+ if(current < firstslot)
+ firstslot=current;
+ if(current > firstslot + slots -1)
diff --git a/recipes/kexecboot/kexecboot-0.4/kexecboot-tosa.patch b/recipes/kexecboot/kexecboot-0.4/kexecboot-tosa.patch
new file mode 100644
index 0000000000..e1f4870853
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/kexecboot-tosa.patch
@@ -0,0 +1,24 @@
+Index: kexecboot-0.4/kexecboot.c
+===================================================================
+--- kexecboot-0.4.orig/kexecboot.c 2009-01-29 01:30:43.000000000 +0000
++++ kexecboot-0.4/kexecboot.c 2009-01-29 01:39:17.000000000 +0000
+@@ -416,7 +416,7 @@
+ {"Spitz", 270},
+
+ {"Collie", 270},
+- {"Tosa", 270},
++ {"SHARP Tosa", 0},
+ {"Poodle", 270},
+ {NULL, 0}
+ };
+@@ -566,7 +566,9 @@
+ break;
+ }
+
+- }while(evt.code != 87 && evt.code != 63);
++ }while(evt.code != 87 && evt.code != 63 &&
++ evt.code != KEY_SPACE && evt.code != KEY_ENTER &&
++ evt.code != KEY_HIRAGANA && evt.code != KEY_HENKAN);
+ fclose(f);
+ // reset terminal
+ tcsetattr(fileno(stdin), TCSANOW, &old);
diff --git a/recipes/kexecboot/kexecboot-0.4/scan_devices-top.patch b/recipes/kexecboot/kexecboot-0.4/scan_devices-top.patch
new file mode 100644
index 0000000000..6b21d03a3d
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/scan_devices-top.patch
@@ -0,0 +1,39 @@
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -508,28 +508,27 @@ int main(int argc, char **argv)
+ if ((fb = fb_new(angle)) == NULL)
+ exit(-1);
+
+- bl = scan_devices();
+-
+- if(!bl->size){
+- puts("No bootable device found");
+- exit(-1);
+- }
+-
+ f = fopen(eventif,"r");
+ if(!f){
+ perror(eventif);
+ exit(3);
+ }
+
+-
+ // deactivate terminal input
+-
+ tcgetattr(fileno(stdin), &old);
+ new = old;
+ new.c_lflag &= ~ECHO;
+ // new.c_cflag &=~CREAD;
+ tcsetattr(fileno(stdin), TCSANOW, &new);
+
++ bl = scan_devices();
++/*
++ if(!bl->size){
++ puts("No bootable device found");
++ exit(-1);
++ }
++*/
++
+ do{
+ display_menu(fb, bl, choice);
+ do
diff --git a/recipes/kexecboot/kexecboot-0.4/silent-output-hack.patch b/recipes/kexecboot/kexecboot-0.4/silent-output-hack.patch
new file mode 100644
index 0000000000..abe8e84dd1
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/silent-output-hack.patch
@@ -0,0 +1,79 @@
+--- a/devicescan.c 2009-01-17 00:51:35.000000000 +0100
++++ b/devicescan.c 2009-01-24 22:13:45.000000000 +0100
+@@ -120,14 +120,14 @@
+ malloc((strlen(split) + strlen("/dev/") +
+ 1) * sizeof(char));
+ sprintf(device, "/dev/%s", split);
+- printf("Probing %s\n",device);
++ /* printf("Probing %s\n",device); */
+ int fd = open(device, O_RDONLY);
+ if (fd < 0) {
+ perror(device);
+ free(device);
+ continue;
+ }
+- printf("Device %s is opened\n", device);
++ /* printf("Device %s is opened\n", device); */
+ if (-1 == identify_fs(fd, &fstype, NULL, 0)) {
+ free(device);
+ continue;
+@@ -137,33 +137,33 @@
+ free(device);
+ continue;
+ }
+- printf("FS on device %s is %s\n", device, fstype);
++ /* printf("FS on device %s is %s\n", device, fstype); */
+ // no unknown filesystems
+ if (contains(fstype, fl) == -1) {
+ free(device);
+ continue;
+ }
+- printf("found %s (%s)\n",device, fstype);
++ /* printf("found %s (%s)\n",device, fstype); */
+ // mount fs
+ if (mount(device, "/mnt", fstype, MS_RDONLY, NULL)) {
+- printf("mount failed\n");
++ /* printf("mount failed\n"); */
+ perror(device);
+ free(device);
+ continue;
+ }
+- printf("mount successful\n");
++ /* printf("mount successful\n"); */
+ if ( (g = fopen("/mnt/zImage", "r")) )
+ kernelpath = "/mnt/zImage";
+ else if ( (g = fopen("/mnt/boot/zImage", "r")) )
+ kernelpath = "/mnt/boot/zImage";
+ else {
+- printf("%s no kernel found, umounting\n", device);
++ /* printf("%s no kernel found, umounting\n", device); */
+ free(device);
+ umount("/mnt");
+ continue;
+ }
+ fclose(g);
+- printf("found kernel\n");
++ /* printf("found kernel\n"); */
+ bl->list[count] = malloc(sizeof(struct boot));
+ bl->list[count]->device = device;
+ bl->list[count]->fstype = fstype;
+@@ -174,7 +174,7 @@
+ fgets(bl->list[count]->cmdline, COMMAND_LINE_SIZE,
+ g);
+ fclose(g);
+- printf("found command line\n");
++ /* printf("found command line\n"); */
+ bl->list[count]->cmdline[strlen(bl->list[count]->cmdline)-1] = '\0';
+ } else
+ bl->list[count]->cmdline = NULL;
+--- a/kexecboot.c 2009-01-25 10:41:04.000000000 +0100
++++ b/kexecboot.c 2009-01-24 22:13:45.000000000 +0100
+@@ -558,7 +558,7 @@
+ case KEY_R:
+ /* FIXME: Should work while no boot devices is found */
+ sync();
+- sleep(1);
++ /* REMOVE: we sleep on boot sleep(1); */
+ /* if ( -1 == reboot(LINUX_REBOOT_CMD_RESTART) ) { */
+ if ( -1 == reboot(RB_AUTOBOOT) ) {
+ perror("Can't initiate reboot");
diff --git a/recipes/kexecboot/kexecboot-0.4/switch-cursor-off.patch b/recipes/kexecboot/kexecboot-0.4/switch-cursor-off.patch
new file mode 100644
index 0000000000..632cc6a01c
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/switch-cursor-off.patch
@@ -0,0 +1,11 @@
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -512,6 +512,9 @@ int main(int argc, char **argv)
+ DPRINTF("FB angle is %d, input device is %s\n", angle, eventif);
+ DPRINTF("Going to fb mode\n");
+
++ /* Switch cursor off. NOTE: works only when master-console is tty */
++ printf("\033[?25l\n");
++
+ if ((fb = fb_new(angle)) == NULL)
+ exit(-1);