arm64: dts: rk3399-box: compatible for rev2 board which cpu_b's vdd gpio is different
[firefly-linux-kernel-4.4.55.git] / block / partitions / rk.c
index 93cb0d6d4b6067a6d18a620deee59807436121a9..73a8f8db3be4bb4ab2527f8f2af2b757f4f1d1c4 100755 (executable)
@@ -45,7 +45,7 @@ static struct rk_partition *newpart(char *s,
                /* No sense support partition less than 8B */
                if (size < ((PAGE_SIZE) >> 9))
                {
-                       printk(KERN_ERR ERRP "partition size too small (%llx)\n", size);
+                       printk(KERN_ERR ERRP "partition size too small (%llx)\n", (u64)size);
                        return NULL;
                }
        }
@@ -276,17 +276,26 @@ static int parse_cmdline_partitions(sector_t n,
 
 static void rkpart_bootmode_fixup(void)
 {
-       const char mode[] = " androidboot.mode=emmc";
+       const char mode_emmc[] = " androidboot.mode=emmc";
+       const char mode_nvme[] = " androidboot.mode=nvme";
        const char charger[] = " 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) + 1, GFP_KERNEL);
-               sprintf(new_command_line, "%s%s", saved_command_line, charger);
+               new_command_line = kzalloc(saved_command_line_len +
+                               strlen(charger) + 1, GFP_KERNEL);
+               sprintf(new_command_line, "%s%s",
+                       saved_command_line, charger);
        } else {
-               new_command_line = kzalloc(saved_command_line_len + strlen(mode) + 1, GFP_KERNEL);
-               sprintf(new_command_line, "%s%s", saved_command_line, mode);
+               new_command_line = kzalloc(saved_command_line_len +
+                               strlen(mode_emmc) + 1, GFP_KERNEL);
+               if (strstr(saved_command_line, "storagemedia=nvme"))
+                       sprintf(new_command_line, "%s%s",
+                               saved_command_line, mode_nvme);
+               else
+                       sprintf(new_command_line, "%s%s",
+                               saved_command_line, mode_emmc);
        }
        saved_command_line = new_command_line;
 }
@@ -300,12 +309,14 @@ int rkpart_partition(struct parsed_partitions *state)
        if (n < SECTOR_1G)
                return 0;
 
-        /* ONLY be used by eMMC-disk */
-        if (1 != state->bdev->bd_disk->emmc_disk)
-                return 0;
+       if (!state->bdev->bd_disk->is_rk_disk)
+               return 0;
 
         /* Fixme: parameter should be coherence with part table */
-       cmdline = strstr(saved_command_line, "mtdparts=") + 9;
+       cmdline = strstr(saved_command_line, "mtdparts=");
+       if (!cmdline)
+               return 0;
+       cmdline += 9;
        cmdline_parsed = 0;
 
        num_parts = parse_cmdline_partitions(n, &parts, 0);
@@ -320,9 +331,9 @@ int rkpart_partition(struct parsed_partitions *state)
                strcpy(state->parts[i+1].info.volname, parts[i].name);
                 printk(KERN_INFO "%10s: 0x%09llx -- 0x%09llx (%llu MB)\n", 
                                parts[i].name,
-                               parts[i].from * 512,
-                               (parts[i].from + parts[i].size) * 512,
-                               parts[i].size / 2048);
+                               (u64)parts[i].from * 512,
+                               (u64)(parts[i].from + parts[i].size) * 512,
+                               (u64)parts[i].size / 2048);
        }
 
        rkpart_bootmode_fixup();