From caba97fc051e7d117ea0600220fce5b5f73f2ad4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Mon, 22 Jul 2013 11:35:20 +0800 Subject: [PATCH] fs/partitions: mtdpart: add command line fix for rk emmc --- fs/partitions/mtdpart.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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; } -- 2.34.1