mirror of
https://git.codelinaro.org/clo/qsdk/oss/boot/u-boot-2016.git
synced 2025-12-10 07:44:53 +01:00
ipq4019: Enabling qca common bootipq command
Change-Id: Ia5c3e996142dfdc194f0ed2f4bbe860b586a4139 Signed-off-by: Gokul Sriram Palanisamy <gpalan@codeaurora.org>
This commit is contained in:
parent
2230d5482d
commit
4a358cb07e
11 changed files with 183 additions and 68 deletions
|
|
@ -3,3 +3,4 @@ ccflags-y += -I$(srctree)/board/qca/ipq40xx/
|
|||
obj-y := smem.o
|
||||
obj-y += timer.o
|
||||
obj-y += scm.o
|
||||
obj-y += cmd_bootqca.o
|
||||
|
|
@ -11,18 +11,18 @@
|
|||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <configs/ipq40xx_cdp.h>
|
||||
#include <configs/ipq40xx.h>
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <image.h>
|
||||
#include <nand.h>
|
||||
#include <errno.h>
|
||||
#include <asm/arch-ipq40xx/scm.h>
|
||||
#include <asm/arch-qcom-common/scm.h>
|
||||
#include <part.h>
|
||||
#include <linux/mtd/ubi.h>
|
||||
#include <asm/arch-ipq40xx/smem.h>
|
||||
#include <asm/arch-qcom-common/smem.h>
|
||||
#include <mmc.h>
|
||||
#include "ipq40xx_cdp.h"
|
||||
#include "ipq40xx.h"
|
||||
|
||||
#define DLOAD_MAGIC_COOKIE0x10
|
||||
#define XMK_STR(x)#x
|
||||
|
|
@ -93,7 +93,7 @@ static int set_fs_bootargs(int *fs_on_nand)
|
|||
char *bootargs;
|
||||
unsigned int active_part = 0;
|
||||
|
||||
#define nand_rootfs"ubi.mtd=" QCA_ROOT_FS_PART_NAME " root=mtd:ubi_rootfs rootfstype=squashfs"
|
||||
#define nand_rootfs "ubi.mtd=" QCA_ROOT_FS_PART_NAME " root=mtd:ubi_rootfs rootfstype=squashfs"
|
||||
|
||||
if (sfi->flash_type == SMEM_BOOT_SPI_FLASH) {
|
||||
if (((sfi->rootfs.offset == 0xBAD0FF5E) &&
|
||||
|
|
@ -258,8 +258,8 @@ static int do_boot_signedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const a
|
|||
*/
|
||||
snprintf(runcmd, sizeof(runcmd),
|
||||
"nand device %d && "
|
||||
"set mtdids nand%d=nand%d && "
|
||||
"set mtdparts mtdparts=nand%d:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"setenv mtdids nand%d=nand%d && "
|
||||
"setenv mtdparts mtdparts=nand%d:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"ubi part fs && "
|
||||
"ubi read 0x%x kernel && ", gboard_param->spi_nand_available,
|
||||
gboard_param->spi_nand_available,
|
||||
|
|
@ -420,8 +420,8 @@ static int do_boot_unsignedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const
|
|||
}
|
||||
|
||||
snprintf(runcmd, sizeof(runcmd),
|
||||
"set mtdids nand0=nand0 && "
|
||||
"set mtdparts mtdparts=nand0:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"setenv mtdids nand0=nand0 && "
|
||||
"setenv mtdparts mtdparts=nand0:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"ubi part fs && "
|
||||
"ubi read 0x%x kernel && ",
|
||||
sfi->rootfs.size, sfi->rootfs.offset,
|
||||
|
|
@ -436,8 +436,8 @@ static int do_boot_unsignedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const
|
|||
}
|
||||
snprintf(runcmd, sizeof(runcmd),
|
||||
"nand device %d && "
|
||||
"set mtdids nand%d=nand%d && "
|
||||
"set mtdparts mtdparts=nand%d:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"setenv mtdids nand%d=nand%d && "
|
||||
"setenv mtdparts mtdparts=nand%d:0x%llx@0x%llx(fs),${msmparts} && "
|
||||
"ubi part fs && "
|
||||
"ubi read 0x%x kernel && ",
|
||||
gboard_param->spi_nand_available,
|
||||
|
|
@ -535,7 +535,7 @@ static int do_bootipq(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
|||
* set fdt_high parameter so that u-boot will not load
|
||||
* dtb above CONFIG_IPQ40XX_FDT_HIGH region.
|
||||
*/
|
||||
if (run_command("set fdt_high " MK_STR(CONFIG_IPQ_FDT_HIGH) "\n", 0)
|
||||
if (run_command("setenv fdt_high " MK_STR(CONFIG_IPQ_FDT_HIGH) "\n", 0)
|
||||
!= CMD_RET_SUCCESS) {
|
||||
return CMD_RET_FAILURE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,24 +61,6 @@ struct qca_platfrom {
|
|||
unsigned foundry_id;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
SMEM_SPINLOCK_ARRAY = 7,
|
||||
SMEM_AARM_PARTITION_TABLE = 9,
|
||||
SMEM_HW_SW_BUILD_ID = 137,
|
||||
SMEM_USABLE_RAM_PARTITION_TABLE = 402,
|
||||
SMEM_POWER_ON_STATUS_INFO = 403,
|
||||
SMEM_IMAGE_VERSION_TABLE = 469,
|
||||
SMEM_BOOT_FLASH_TYPE = 478,
|
||||
SMEM_BOOT_FLASH_INDEX = 479,
|
||||
SMEM_BOOT_FLASH_CHIP_SELECT = 480,
|
||||
SMEM_BOOT_FLASH_BLOCK_SIZE = 481,
|
||||
SMEM_BOOT_FLASH_DENSITY = 482,
|
||||
SMEM_PARTITION_TABLE_OFFSET = 483,
|
||||
SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
|
||||
SMEM_LAST_VALID_TYPE = SMEM_PARTITION_TABLE_OFFSET,
|
||||
SMEM_MAX_SIZE = SMEM_PARTITION_TABLE_OFFSET + 1,
|
||||
} smem_mem_type_t;
|
||||
|
||||
struct smem_proc_comm {
|
||||
unsigned command;
|
||||
unsigned status;
|
||||
|
|
@ -225,6 +207,22 @@ int smem_ptable_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* smem_bootconfig_info - retrieve bootconfig flags
|
||||
*/
|
||||
int smem_bootconfig_info(void)
|
||||
{
|
||||
unsigned ret;
|
||||
|
||||
ret = smem_read_alloc_entry(SMEM_BOOT_DUALPARTINFO,
|
||||
&qca_smem_bootconfig_info, sizeof(qca_smem_bootconfig_info_t));
|
||||
if ((ret != 0) || (qca_smem_bootconfig_info.magic
|
||||
!= _SMEM_DUAL_BOOTINFO_MAGIC))
|
||||
return -ENOMSG;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int get_rootfs_active_partition(void)
|
||||
{
|
||||
int i;
|
||||
|
|
@ -252,7 +250,7 @@ unsigned int get_partition_table_offset(void)
|
|||
return primary_mibib;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* smem_getpart - retreive partition start and size
|
||||
* @part_name: partition name
|
||||
* @start: location where the start offset is to be stored
|
||||
|
|
@ -282,7 +280,7 @@ int smem_getpart(char *part_name, uint32_t *start, uint32_t *size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* smem_get_boot_flash - retreive the boot flash info
|
||||
* @flash_type: location where the flash type is to be stored
|
||||
* @flash_index: location where the flash index is to be stored
|
||||
|
|
@ -369,7 +367,7 @@ unsigned int smem_get_board_platform_type()
|
|||
return machid;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* smem_ptable_init - initializes RAM partition table from SMEM
|
||||
*
|
||||
*/
|
||||
|
|
@ -394,8 +392,41 @@ int smem_ram_ptable_init(struct smem_ram_ptable *smem_ram_ptable)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* get nand block size by device id.
|
||||
* dev_id is 0 for parallel nand.
|
||||
* dev_id is 1 for spi nand.
|
||||
*/
|
||||
uint32_t get_nand_block_size(uint8_t dev_id)
|
||||
{
|
||||
struct mtd_info *mtd;
|
||||
|
||||
mtd = &nand_info[dev_id];
|
||||
|
||||
return mtd->erasesize;
|
||||
}
|
||||
|
||||
/*
|
||||
* get flash block size based on partition name.
|
||||
*/
|
||||
static inline uint32_t get_flash_block_size(char *name,
|
||||
qca_smem_flash_info_t *smem)
|
||||
{
|
||||
return (get_which_flash_param(name) == 1) ?
|
||||
get_nand_block_size(0)
|
||||
: smem->flash_block_size;
|
||||
}
|
||||
|
||||
#define part_which_flash(p) (((p)->attr & 0xff000000) >> 24)
|
||||
|
||||
static inline uint32_t get_part_block_size(struct smem_ptn *p,
|
||||
qca_smem_flash_info_t *sfi)
|
||||
{
|
||||
return (part_which_flash(p) == 1) ?
|
||||
get_nand_block_size(0)
|
||||
: sfi->flash_block_size;
|
||||
}
|
||||
|
||||
void qca_set_part_entry(char *name, qca_smem_flash_info_t *smem,
|
||||
qca_part_entry_t *part, uint32_t start, uint32_t size)
|
||||
{
|
||||
|
|
@ -408,14 +439,12 @@ uint32_t qca_smem_get_flash_block_size(void)
|
|||
return qca_smem_flash_info.flash_block_size;
|
||||
}
|
||||
|
||||
|
||||
char *qca_smem_part_to_mtdparts(char *mtdid)
|
||||
void qca_smem_part_to_mtdparts(char *mtdid)
|
||||
{
|
||||
#if 0
|
||||
qca_smem_flash_info_t *sfi = &qca_smem_flash_info;
|
||||
int i, l;
|
||||
int device_id = 0;
|
||||
char *part = parts, *unit;
|
||||
char *part = mtdid, *unit;
|
||||
int init = 0;
|
||||
uint32_t bsize;
|
||||
|
||||
|
|
@ -427,7 +456,7 @@ char *qca_smem_part_to_mtdparts(char *mtdid)
|
|||
bsize = get_part_block_size(p, sfi);
|
||||
|
||||
if (part_which_flash(p) && init == 0) {
|
||||
device_id = (gboard_param->spi_nand_available == 1) ? 1 : 0;
|
||||
device_id = 0; /* Hard coded as gboard_param is to be removed and nand is not enabled yet */
|
||||
l = sprintf(part, ";nand%d:", device_id);
|
||||
part += l;
|
||||
init = 1;
|
||||
|
|
@ -459,13 +488,9 @@ char *qca_smem_part_to_mtdparts(char *mtdid)
|
|||
}
|
||||
|
||||
if (i == 0)
|
||||
return NULL;
|
||||
mtdid = NULL;
|
||||
|
||||
*part = 0; /* Remove the trailing comma */
|
||||
|
||||
return parts;
|
||||
#endif
|
||||
return NULL; //fix_me
|
||||
*(part-1) = 0; /* Remove the trailing ',' character */
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -142,6 +142,6 @@ extern qca_smem_bootconfig_info_t qca_smem_bootconfig_info;
|
|||
int smem_bootconfig_info(void);
|
||||
unsigned int get_rootfs_active_partition(void);
|
||||
unsigned int get_mibib_active_partition(void);
|
||||
char *qca_smem_part_to_mtdparts(char *mtdid);
|
||||
void qca_smem_part_to_mtdparts(char *mtdid);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@
|
|||
#include <nand.h>
|
||||
#include <part.h>
|
||||
#include <asm/arch-qcom-common/smem.h>
|
||||
#include <asm/arch-qcom-common/scm.h>
|
||||
#include <jffs2/load_kernel.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
|
@ -38,6 +40,8 @@ extern int nand_env_init(void);
|
|||
extern int nand_saveenv(void);
|
||||
extern void nand_env_relocate_spec(void);
|
||||
extern int ipq_spi_init(u16);
|
||||
extern int fdt_node_set_part_info(void *blob, int parent_offset,
|
||||
struct mtd_device *dev);
|
||||
/*
|
||||
* Don't have this as a '.bss' variable. The '.bss' and '.rel.dyn'
|
||||
* sections seem to overlap.
|
||||
|
|
@ -169,16 +173,21 @@ int board_init(void)
|
|||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (sfi->flash_type == SMEM_BOOT_NAND_FLASH) {
|
||||
switch (sfi->flash_type) {
|
||||
case SMEM_BOOT_NAND_FLASH:
|
||||
nand_env_device = CONFIG_QPIC_NAND_NAND_INFO_IDX;
|
||||
} else if (sfi->flash_type == SMEM_BOOT_SPI_FLASH) {
|
||||
break;
|
||||
case SMEM_BOOT_SPI_FLASH:
|
||||
nand_env_device = CONFIG_IPQ_SPI_NOR_INFO_IDX;
|
||||
} else if (sfi->flash_type != SMEM_BOOT_MMC_FLASH) {
|
||||
break;
|
||||
case SMEM_BOOT_MMC_FLASH:
|
||||
break;
|
||||
default:
|
||||
printf("BUG: unsupported flash type : %d\n", sfi->flash_type);
|
||||
BUG();
|
||||
}
|
||||
|
||||
|
||||
if (sfi->flash_type != SMEM_BOOT_MMC_FLASH) {
|
||||
ret = smem_getpart("0:APPSBLENV", &start_blocks, &size_blocks);
|
||||
if (ret < 0) {
|
||||
|
|
@ -190,19 +199,23 @@ int board_init(void)
|
|||
board_env_size = ((loff_t) sfi->flash_block_size) * size_blocks;
|
||||
}
|
||||
|
||||
if (sfi->flash_type == SMEM_BOOT_NAND_FLASH) {
|
||||
switch (sfi->flash_type) {
|
||||
case SMEM_BOOT_NAND_FLASH:
|
||||
board_env_range = CONFIG_ENV_SIZE_MAX;
|
||||
BUG_ON(board_env_size < CONFIG_ENV_SIZE_MAX);
|
||||
} else if (sfi->flash_type == SMEM_BOOT_SPI_FLASH) {
|
||||
BUG_ON(board_env_size < CONFIG_ENV_SIZE_MAX);
|
||||
break;
|
||||
case SMEM_BOOT_SPI_FLASH:
|
||||
board_env_range = board_env_size;
|
||||
BUG_ON(board_env_size > CONFIG_ENV_SIZE_MAX);
|
||||
BUG_ON(board_env_size > CONFIG_ENV_SIZE_MAX);
|
||||
break;
|
||||
#ifdef CONFIG_QCA_MMC
|
||||
} else if (sfi->flash_type == SMEM_BOOT_MMC_FLASH) {
|
||||
case SMEM_BOOT_MMC_FLASH:
|
||||
board_env_range = CONFIG_ENV_SIZE_MAX;
|
||||
break;
|
||||
#endif
|
||||
} else {
|
||||
default:
|
||||
printf("BUG: unsupported flash type : %d\n", sfi->flash_type);
|
||||
BUG();
|
||||
BUG();
|
||||
}
|
||||
|
||||
if (sfi->flash_type != SMEM_BOOT_MMC_FLASH) {
|
||||
|
|
@ -293,6 +306,17 @@ void reset_cpu(ulong addr)
|
|||
{
|
||||
}
|
||||
|
||||
static void reset_crashdump(void)
|
||||
{
|
||||
unsigned int magic_cookie = CLEAR_MAGIC;
|
||||
unsigned int clear_info[] =
|
||||
{ 1 /* Disable wdog debug */, 0 /* SDI enable*/, };
|
||||
scm_call(SCM_SVC_BOOT, SCM_CMD_TZ_CONFIG_HW_FOR_RAM_DUMP_ID,
|
||||
(const void *)&clear_info, sizeof(clear_info), NULL, 0);
|
||||
scm_call(SCM_SVC_BOOT, SCM_CMD_TZ_FORCE_DLOAD_ID, &magic_cookie,
|
||||
sizeof(magic_cookie), NULL, 0);
|
||||
}
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
struct smem_ram_ptable rtable;
|
||||
|
|
@ -502,12 +526,12 @@ void ipq_fdt_fixup_mtdparts(void *blob, struct flash_node_info *ni)
|
|||
* By default, u-boot will walk the dram bank info and populate the /memory
|
||||
* node; here, overwrite this behavior so we describe all of memory instead.
|
||||
*/
|
||||
void ft_board_setup(void *blob, bd_t *bd)
|
||||
int ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
u64 memory_start = CONFIG_SYS_SDRAM_BASE;
|
||||
u64 memory_size = gboard_param->ddr_size;
|
||||
char *mtdparts = NULL;
|
||||
char parts_str[256];
|
||||
char parts_str[4096];
|
||||
qca_smem_flash_info_t *sfi = &qca_smem_flash_info;
|
||||
struct flash_node_info nodes[] = {
|
||||
{ "qcom,msm-nand", MTD_DEV_TYPE_NAND, 0 },
|
||||
|
|
@ -522,7 +546,8 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
ipq_fdt_mem_rsvd_fixup(blob);
|
||||
#endif
|
||||
if (sfi->flash_type == SMEM_BOOT_NAND_FLASH) {
|
||||
mtdparts = "mtdparts=nand0";
|
||||
sprintf(parts_str, "mtdparts=nand0");
|
||||
mtdparts = parts_str;
|
||||
} else if (sfi->flash_type == SMEM_BOOT_SPI_FLASH) {
|
||||
/* Patch NOR block size and density for
|
||||
* generic probe case */
|
||||
|
|
@ -532,22 +557,19 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
sprintf(parts_str,
|
||||
"mtdparts=nand1:0x%x@0(rootfs);spi0.0",
|
||||
IPQ_NAND_ROOTFS_SIZE);
|
||||
mtdparts = parts_str;
|
||||
} else if (gboard_param->nor_nand_available &&
|
||||
get_which_flash_param("rootfs") == 0) {
|
||||
sprintf(parts_str,
|
||||
"mtdparts=nand0:0x%x@0(rootfs);spi0.0",
|
||||
IPQ_NAND_ROOTFS_SIZE);
|
||||
mtdparts = parts_str;
|
||||
|
||||
} else {
|
||||
mtdparts = "mtdparts=spi0.0";
|
||||
sprintf(parts_str, "mtdparts=spi0.0");
|
||||
}
|
||||
mtdparts = parts_str;
|
||||
}
|
||||
|
||||
|
||||
if (mtdparts) {
|
||||
mtdparts = qca_smem_part_to_mtdparts(mtdparts);
|
||||
qca_smem_part_to_mtdparts(mtdparts);
|
||||
if (mtdparts != NULL) {
|
||||
debug("mtdparts = %s\n", mtdparts);
|
||||
setenv("mtdparts", mtdparts);
|
||||
|
|
@ -557,13 +579,12 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
ipq_fdt_fixup_mtdparts(blob, nodes);
|
||||
}
|
||||
dcache_disable();
|
||||
ipq40xx_set_ethmac_addr();
|
||||
fdt_fixup_ethernet(blob);
|
||||
|
||||
#ifdef CONFIG_QCA_MMC
|
||||
board_mmc_deinit();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_OF_BOARD_SETUP */
|
||||
|
|
|
|||
|
|
@ -116,6 +116,25 @@ typedef struct {
|
|||
const char *dtb_config_name[MAX_CONF_NAME];
|
||||
} __attribute__ ((__packed__)) board_ipq40xx_params_t;
|
||||
|
||||
typedef enum {
|
||||
SMEM_SPINLOCK_ARRAY = 7,
|
||||
SMEM_AARM_PARTITION_TABLE = 9,
|
||||
SMEM_HW_SW_BUILD_ID = 137,
|
||||
SMEM_USABLE_RAM_PARTITION_TABLE = 402,
|
||||
SMEM_POWER_ON_STATUS_INFO = 403,
|
||||
SMEM_IMAGE_VERSION_TABLE = 469,
|
||||
SMEM_BOOT_FLASH_TYPE = 478,
|
||||
SMEM_BOOT_FLASH_INDEX = 479,
|
||||
SMEM_BOOT_FLASH_CHIP_SELECT = 480,
|
||||
SMEM_BOOT_FLASH_BLOCK_SIZE = 481,
|
||||
SMEM_BOOT_FLASH_DENSITY = 482,
|
||||
SMEM_PARTITION_TABLE_OFFSET = 483,
|
||||
SMEM_BOOT_DUALPARTINFO = 484,
|
||||
SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
|
||||
SMEM_LAST_VALID_TYPE = SMEM_PARTITION_TABLE_OFFSET,
|
||||
SMEM_MAX_SIZE = SMEM_PARTITION_TABLE_OFFSET + 1,
|
||||
} smem_mem_type_t;
|
||||
|
||||
extern board_ipq40xx_params_t *gboard_param;
|
||||
unsigned int get_board_index(unsigned int machid);
|
||||
void qca_configure_gpio(gpio_func_data_t *gpio, uint count);
|
||||
|
|
|
|||
|
|
@ -28,4 +28,23 @@
|
|||
#define GCC_SDCC1_APPS_N 0x1842010
|
||||
#define GCC_SDCC1_APPS_D 0x1842014
|
||||
|
||||
typedef enum {
|
||||
SMEM_SPINLOCK_ARRAY = 7,
|
||||
SMEM_AARM_PARTITION_TABLE = 9,
|
||||
SMEM_HW_SW_BUILD_ID = 137,
|
||||
SMEM_USABLE_RAM_PARTITION_TABLE = 402,
|
||||
SMEM_POWER_ON_STATUS_INFO = 403,
|
||||
SMEM_IMAGE_VERSION_TABLE = 469,
|
||||
SMEM_BOOT_FLASH_TYPE = 478,
|
||||
SMEM_BOOT_FLASH_INDEX = 479,
|
||||
SMEM_BOOT_FLASH_CHIP_SELECT = 480,
|
||||
SMEM_BOOT_FLASH_BLOCK_SIZE = 481,
|
||||
SMEM_BOOT_FLASH_DENSITY = 482,
|
||||
SMEM_PARTITION_TABLE_OFFSET = 483,
|
||||
SMEM_BOOT_DUALPARTINFO = 484,
|
||||
SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
|
||||
SMEM_LAST_VALID_TYPE = SMEM_PARTITION_TABLE_OFFSET,
|
||||
SMEM_MAX_SIZE = SMEM_PARTITION_TABLE_OFFSET + 1,
|
||||
} smem_mem_type_t;
|
||||
|
||||
#endif /* _IPQ807X_H_ */
|
||||
|
|
|
|||
|
|
@ -327,6 +327,17 @@ int ubi_volume_write(char *volume, void *buf, size_t size)
|
|||
return ubi_volume_begin_write(volume, buf, size, size);
|
||||
}
|
||||
|
||||
long long ubi_get_volume_size(char *volume)
|
||||
{
|
||||
struct ubi_volume *vol;
|
||||
|
||||
vol = ubi_find_volume(volume);
|
||||
if (vol == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
return vol->used_bytes;
|
||||
}
|
||||
|
||||
int ubi_volume_read(char *volume, char *buf, size_t size)
|
||||
{
|
||||
int err, lnum, off, len, tbuf_size;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,13 @@ typedef volatile unsigned char vu_char;
|
|||
#if defined(CONFIG_PCI) && defined(CONFIG_4xx)
|
||||
#include <pci.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_IPQ40XX)
|
||||
#include <../board/qca/ipq40xx/ipq40xx.h>
|
||||
#elif defined(CONFIG_IPQ_RUMI)
|
||||
#include <../board/qca/ipq807x/ipq807x.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_8xx)
|
||||
#include <asm/8xx_immap.h>
|
||||
#if defined(CONFIG_MPC859) || defined(CONFIG_MPC859T) || \
|
||||
|
|
|
|||
|
|
@ -138,6 +138,9 @@ typedef struct {
|
|||
#define CONFIG_QPIC_NAND_NAND_INFO_IDX 0
|
||||
#define CONFIG_IPQ_SPI_NAND_INFO_IDX 1
|
||||
#define CONFIG_IPQ_SPI_NOR_INFO_IDX 2
|
||||
|
||||
#define QCA_ROOT_FS_PART_NAME "rootfs"
|
||||
|
||||
/*
|
||||
* SPI Flash Configs
|
||||
*/
|
||||
|
|
@ -171,7 +174,15 @@ typedef struct {
|
|||
#define CONFIG_MTD_PARTITIONS
|
||||
#define CONFIG_CMD_MTDPARTS
|
||||
|
||||
#define CONFIG_BOOTCOMMAND "bootipq"
|
||||
#define CONFIG_CMD_UBI
|
||||
#define CONFIG_RBTREE
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
#define CONFIG_SYS_BOOTM_LEN (64 << 20)
|
||||
#define CONFIG_IPQ_FDT_HIGH 0x87000000
|
||||
#define CONFIG_OF_BOARD_SETUP 1
|
||||
#define CONFIG_FDT_FIXUP_PARTITIONS
|
||||
#define CONFIG_BOOTCOMMAND "bootipq"
|
||||
|
||||
#define CONFIG_BOOTDELAY 2
|
||||
|
||||
#endif /* _IPQ40XX_H */
|
||||
|
|
|
|||
|
|
@ -228,6 +228,7 @@ struct ubi_notification {
|
|||
/* UBI descriptor given to users when they open UBI volumes */
|
||||
struct ubi_volume_desc;
|
||||
|
||||
long long ubi_get_volume_size(char *volume);
|
||||
int ubi_get_device_info(int ubi_num, struct ubi_device_info *di);
|
||||
void ubi_get_volume_info(struct ubi_volume_desc *desc,
|
||||
struct ubi_volume_info *vi);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue