diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 0831456..1ff4a8e 100755
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -27,10 +27,22 @@
 #include "bus.h"
 #include "mmc_ops.h"
 #include "sd_ops.h"
+/*[TracyChui]Add memory detect node for service menu 20200629 start */
+#include <linux/proc_fs.h>
+/*[TracyChui]Add memory detect node for service menu 20200629 end */
 
 #define DEFAULT_CMD6_TIMEOUT_MS	500
 #define MIN_CACHE_EN_TIMEOUT_MS 1600
 
+/*[TracyChui]Add memory detect node for service menu 20200629 start */
+extern void seq_printf(struct seq_file *m, const char *f, ...);
+extern int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
+extern ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
+extern loff_t seq_lseek(struct file *, loff_t, int);
+extern int single_release(struct inode *, struct file *);
+static u32 memory_cid;
+/*[TracyChui]Add memory detect node for service menu 20200629 end */
+
 static const unsigned int tran_exp[] = {
 	10000,		100000,		1000000,	10000000,
 	0,		0,		0,		0
@@ -3156,6 +3168,33 @@
 	.post_hibernate = mmc_post_hibernate
 };
 
+/*[TracyChui]Add memory detect node for service menu 20200629 start */
+static int proc_memory_vendor_show(struct seq_file *m, void *v)
+{
+	if (memory_cid==0x15010052)
+		{
+		seq_printf(m, "Samsung_2nd\n");
+		}
+	else
+		{
+			seq_printf(m, "Samsung_Main\n");
+		}
+	return 0;
+}
+
+static int proc_memory_vendor_open(struct inode *inode, struct file *file)
+	{
+		return single_open(file, proc_memory_vendor_show, NULL);
+	}
+
+static const struct file_operations proc_memory_vendor_fops = {
+	.open  = proc_memory_vendor_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+/*[TracyChui]Add memory detect node for service menu 20200629 end */
+
 /*
  * Starting point for MMC card init.
  */
@@ -3219,6 +3258,14 @@
 
 	register_reboot_notifier(&host->card->reboot_notify);
 
+	/*[TracyChui]Add memory detect node for service menu 20200629 start */
+	proc_create("memory_vendor", 0, NULL, &proc_memory_vendor_fops);
+	if(host->card->type == MMC_TYPE_MMC)
+		{
+			memory_cid=host->card->raw_cid[0];
+		}
+	/*[TracyChui]Add memory detect node for service menu 20200629 end */
+
 	return 0;
 
 remove_card:
