rockchip: param: reverve 4MB for emmc
Need to reserver first 4MB for EMMC while use the addr directly for NAND. Change-Id: I5c6309e41a9c287388cb6c0ff7ba5b1ef9ff29bf Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
parent
534066e47b
commit
282f89a3b6
|
|
@ -28,7 +28,8 @@ struct rkparm_part {
|
||||||
|
|
||||||
static LIST_HEAD(parts_head);
|
static LIST_HEAD(parts_head);
|
||||||
|
|
||||||
static int rkparm_param_parse(char *param, struct list_head *parts_head)
|
static int rkparm_param_parse(char *param, struct list_head *parts_head,
|
||||||
|
struct blk_desc *dev_desc)
|
||||||
{
|
{
|
||||||
struct rkparm_part *part;
|
struct rkparm_part *part;
|
||||||
const char *cmdline = strstr(param, "CMDLINE:");
|
const char *cmdline = strstr(param, "CMDLINE:");
|
||||||
|
|
@ -37,7 +38,7 @@ static int rkparm_param_parse(char *param, struct list_head *parts_head)
|
||||||
const char *blkdev_def = strchr(blkdev_parts, ':') + 1;
|
const char *blkdev_def = strchr(blkdev_parts, ':') + 1;
|
||||||
char *next = (char *)blkdev_def;
|
char *next = (char *)blkdev_def;
|
||||||
char *pend;
|
char *pend;
|
||||||
int len;
|
int len, offset = 0;
|
||||||
unsigned long size, start;
|
unsigned long size, start;
|
||||||
|
|
||||||
if (!cmdline) {
|
if (!cmdline) {
|
||||||
|
|
@ -68,7 +69,9 @@ static int rkparm_param_parse(char *param, struct list_head *parts_head)
|
||||||
printf("out of memory\n");
|
printf("out of memory\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
part->start = start;
|
if (dev_desc->if_type != IF_TYPE_RKNAND)
|
||||||
|
offset = RK_PARAM_OFFSET;
|
||||||
|
part->start = start + offset;
|
||||||
part->size = size;
|
part->size = size;
|
||||||
strncpy(part->name, next, len);
|
strncpy(part->name, next, len);
|
||||||
part->name[len] = '\0';
|
part->name[len] = '\0';
|
||||||
|
|
@ -84,6 +87,7 @@ static int rkparm_init_param(struct blk_desc *dev_desc,
|
||||||
struct list_head *parts_head)
|
struct list_head *parts_head)
|
||||||
{
|
{
|
||||||
struct rkparm_param *param;
|
struct rkparm_param *param;
|
||||||
|
int offset = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
param = memalign(ARCH_DMA_MINALIGN, MAX_PARAM_SIZE);
|
param = memalign(ARCH_DMA_MINALIGN, MAX_PARAM_SIZE);
|
||||||
|
|
@ -92,14 +96,16 @@ static int rkparm_init_param(struct blk_desc *dev_desc,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = blk_dread(dev_desc, RK_PARAM_OFFSET, MAX_PARAM_SIZE >> 9,
|
if (dev_desc->if_type != IF_TYPE_RKNAND)
|
||||||
(ulong *)param);
|
offset = RK_PARAM_OFFSET;
|
||||||
|
|
||||||
|
ret = blk_dread(dev_desc, offset, MAX_PARAM_SIZE >> 9, (ulong *)param);
|
||||||
if (ret != (MAX_PARAM_SIZE >> 9)) {
|
if (ret != (MAX_PARAM_SIZE >> 9)) {
|
||||||
printf("%s param read fail\n", __func__);
|
printf("%s param read fail\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return rkparm_param_parse(param->params, parts_head);
|
return rkparm_param_parse(param->params, parts_head, dev_desc);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue