From: 黄涛 <huangtao@rock-chips.com> Date: Mon, 22 Jul 2013 03:35:20 +0000 (+0800) Subject: fs/partitions: mtdpart: add command line fix for rk emmc X-Git-Tag: firefly_0821_release~6857^2~9 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=caba97fc051e7d117ea0600220fce5b5f73f2ad4;p=firefly-linux-kernel-4.4.55.git fs/partitions: mtdpart: add command line fix for rk emmc --- diff --git a/fs/partitions/mtdpart.c b/fs/partitions/mtdpart.c index 7e93ddd7026b..b4b353ac7b7b 100644 --- a/fs/partitions/mtdpart.c +++ b/fs/partitions/mtdpart.c @@ -311,6 +311,23 @@ static int parse_cmdline_partitions(sector_t n, return 0; } +static void rk_emmc_fix(void) +{ + const char mode_emmc[] = " androidboot.mode=emmc"; + const char charger_emmc[] = " androidboot.charger.emmc=1"; + char *new_command_line; + size_t saved_command_line_len = strlen(saved_command_line); + + if (strstr(saved_command_line, "androidboot.mode=charger")) { + new_command_line = kzalloc(saved_command_line_len + strlen(charger_emmc) + 1, GFP_KERNEL); + sprintf(new_command_line, "%s%s", saved_command_line, charger_emmc); + } else { + new_command_line = kzalloc(saved_command_line_len + strlen(mode_emmc) + 1, GFP_KERNEL); + sprintf(new_command_line, "%s%s", saved_command_line, mode_emmc); + } + saved_command_line = new_command_line; +} + int mtdpart_partition(struct parsed_partitions *state) { int num_parts = 0, i; @@ -320,6 +337,9 @@ int mtdpart_partition(struct parsed_partitions *state) if(n < SECTOR_1G) return 0; + if (state->bdev->bd_disk->major != MMC_BLOCK_MAJOR || state->bdev->bd_disk->first_minor != 0) + return 0; + cmdline = strstr(saved_command_line, "mtdparts=") + 9; num_parts = parse_cmdline_partitions(n, &parts, 0); @@ -336,6 +356,8 @@ int mtdpart_partition(struct parsed_partitions *state) parts[i].size / 2048); } + rk_emmc_fix(); + return 1; }