Files
openloongarch-uboot-2022.04/board/loongson/common/loongson_img_fdisk.c
T
loongson 1d58dfa04b update to cadd162f
1. support update dtb
2. support install rootfs from ramdisk
3. other fixs
2024-07-25 14:11:52 +08:00

87 lines
2.3 KiB
C

#include <common.h>
#include <command.h>
#include <malloc.h>
#define TARGET_FDISK_TXT_PATH "/usr/local/ls_resize/fdisk.txt"
static void try_read_block(char* block_type)
{
int ret;
#if defined(CONFIG_SOC_LS2K300) || defined(CONFIG_SOC_LS2P500)
char* target_block = "mmc0:1";
#else
char* target_block = "scsi0:1";
#endif
char cmd[256];
memset(cmd, 0 , 256);
sprintf(cmd, "general_load --if %s%s --fmt fat32 --sym /update/fdisk.txt --of %s --fmt ext4 --sym %s --force", block_type, "0:1", target_block, TARGET_FDISK_TXT_PATH);
ret = run_command(cmd, 0);
if (!ret)
return;
memset(cmd, 0 , 256);
sprintf(cmd, "general_load --if %s%s --fmt fat32 --sym /update/fdisk.txt --of %s --fmt ext4 --sym %s --force", block_type, "0", target_block, TARGET_FDISK_TXT_PATH);
ret = run_command(cmd, 0);
if (!ret)
return;
memset(cmd, 0 , 256);
sprintf(cmd, "general_load --if %s%s --fmt ext4 --sym /update/fdisk.txt --of %s --fmt ext4 --sym %s --force", block_type, "0:1", target_block, TARGET_FDISK_TXT_PATH);
ret = run_command(cmd, 0);
if (!ret)
return;
memset(cmd, 0 , 256);
sprintf(cmd, "general_load --if %s%s --fmt ext4 --sym /update/fdisk.txt --of %s --fmt ext4 --sym %s --force", block_type, "0", target_block, TARGET_FDISK_TXT_PATH);
ret = run_command(cmd, 0);
if (!ret)
return;
}
static void try_read_tftp(void)
{
char* server_ip = NULL;
#if defined(CONFIG_SOC_LS2K300) || defined(CONFIG_SOC_LS2P500)
char* target_block = "mmc0:1";
#else
char* target_block = "scsi0:1";
#endif
char cmd[256];
// general_load --if net:192.168.1.2 --fmt tftp --sym fdisk.txt --of mmc0:1 --fmt ext4 --sym /root/fdisk.txt --force
server_ip = env_get("serverip");
// fdisk.txt 是隐匿的,应快速超时
env_set("tftptimeout", "1");
env_set("tftptimeoutcountmax", "1");
memset(cmd, 0 , 256);
sprintf(cmd, "general_load --if net:%s --fmt tftp --sym fdisk.txt --of %s --fmt ext4 --sym %s --force", server_ip, target_block, TARGET_FDISK_TXT_PATH);
run_command(cmd, 0);
return;
}
int loongson_try_read_img_fdisk(char* read_way)
{
if (!read_way)
return -1;
print_enable_setup(0);
if (!strcmp(read_way, "usb")) {
try_read_block(read_way);
} else if (!strcmp(read_way, "mmc")) {
try_read_block(read_way);
} else if (!strcmp(read_way, "tftp")) {
try_read_tftp();
}
print_enable_setup(1);
return 0;
}