IMX6Q_SABRESD, L3.0.35_4.1.0,
修改
static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,
char **cmdline, struct meminfo *mi)
{
/* ... */
char *str;
struct tag *t;
int i = 0;
struct ipuv3_fb_platform_data *pdata_fb = sbc6q_fb_data;
// return ; <--------------------------- 如何从这里return 内核可以启动
for_each_tag(t, tags) {
if (t->hdr.tag == ATAG_CMDLINE) {
str = t->u.cmdline.cmdline;
str = strstr(str, "fbmem=");
-----------------------------------------------
if (str != NULL) {
str += 6;
pdata_fb[i++].res_size[0] = memparse(str, &str);
while (*str == ',' &&
i < ARRAY_SIZE(sbc6q_fb_data)) { 执行这段代码内核崩溃 单独只传递fb0base不会崩溃
str++;
pdata_fb[i++].res_size[0] = memparse(str, &str);
}
} --------------------------------------------------
/* ION reserved memory */
/* Primary framebuffer base address */
str = t->u.cmdline.cmdline;
str = strstr(str, "fb0base=");
if (str != NULL) {
str += 8;
pdata_fb[0].res_base[0] =
simple_strtol(str, &str, 16);
}
break;
}
}
}
|