[target]: Add code to get LINUX_MACHTYPE by calling a function for all targets

Add code to read the hardware platform and return the corresponding
LINUX_MACHTYPE for msm7630_surf target.
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
old mode 100644
new mode 100755
index dbfc0ac..09bed6e
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -65,6 +65,7 @@
 
 void platform_uninit_timer(void);
 unsigned* target_atag_mem(unsigned* ptr);
+unsigned board_machtype(void);
 
 static void ptentry_to_tag(unsigned **ptr, struct ptentry *ptn)
 {
@@ -211,7 +212,7 @@
 
 	dprintf(INFO, "\nBooting Linux\n");
 	boot_linux((void *)hdr->kernel_addr, (void *)TAGS_ADDR,
-		   (const char *)cmdline, LINUX_MACHTYPE,
+		   (const char *)cmdline, board_machtype(),
 		   (void *)hdr->ramdisk_addr, hdr->ramdisk_size);
 
 	return 0;
@@ -248,9 +249,8 @@
 	fastboot_okay("");
 	udc_stop();
 
-
 	boot_linux((void*) KERNEL_ADDR, (void*) TAGS_ADDR,
-		   (const char*) hdr.cmdline, LINUX_MACHTYPE,
+		   (const char*) hdr.cmdline, board_machtype(),
 		   (void*) RAMDISK_ADDR, hdr.ramdisk_size);
 }
 
diff --git a/makefile b/makefile
index 47ccb38..5773c58 100644
--- a/makefile
+++ b/makefile
@@ -28,6 +28,7 @@
 BOOTLOADER_OUT := .
 endif
 
+LK_TOP_DIR:= .
 BUILDDIR := $(BOOTLOADER_OUT)/build-$(PROJECT)
 OUTBIN := $(BUILDDIR)/lk.bin
 OUTELF := $(BUILDDIR)/lk
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index b490653..a514f95 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -2,6 +2,8 @@
  * Copyright (c) 2009, Google Inc.
  * All rights reserved.
  *
+ * Copyright (c) 2009, Code Aurora Forum. All rights reserved.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -62,13 +64,26 @@
 	struct smem_alloc_info		alloc_info[128];
 };
 
+struct smem_board_info
+{
+    unsigned format;
+    unsigned msm_id;
+    unsigned msm_version;
+    char     build_id[32];
+    unsigned raw_msm_id;
+    unsigned raw_msm_version;
+    unsigned hw_platform;
+};
+
 typedef enum {
 	SMEM_SPINLOCK_ARRAY = 7,
 
 	SMEM_AARM_PARTITION_TABLE = 9,
 
+        SMEM_BOARD_INFO_LOCATION = 137,
+
 	SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
-	SMEM_LAST_VALID_TYPE = SMEM_AARM_PARTITION_TABLE,
+	SMEM_LAST_VALID_TYPE = SMEM_BOARD_INFO_LOCATION,
 } smem_mem_type_t;
 
 /* Note: buf MUST be 4byte aligned, and max_len MUST be a multiple of 4. */
diff --git a/target/msm7627_ffa/init.c b/target/msm7627_ffa/init.c
index d63c9e4..663d3af 100644
--- a/target/msm7627_ffa/init.c
+++ b/target/msm7627_ffa/init.c
@@ -36,6 +36,8 @@
 #include <lib/ptable.h>
 #include <dev/flash.h>
 
+#define LINUX_MACHTYPE  1007015
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -110,3 +112,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/msm7627_ffa/rules.mk b/target/msm7627_ffa/rules.mk
index d4f2200..955471c 100755
--- a/target/msm7627_ffa/rules.mk
+++ b/target/msm7627_ffa/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 1007015
-
 BASE_ADDR        := 0x00200000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -27,7 +25,6 @@
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
 	MEMBASE=$(MEMBASE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/msm7627_surf/init.c b/target/msm7627_surf/init.c
index d63c9e4..d39350b 100644
--- a/target/msm7627_surf/init.c
+++ b/target/msm7627_surf/init.c
@@ -36,6 +36,8 @@
 #include <lib/ptable.h>
 #include <dev/flash.h>
 
+#define LINUX_MACHTYPE  1007014
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -110,3 +112,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/msm7627_surf/rules.mk b/target/msm7627_surf/rules.mk
index 38bf4cd..955471c 100644
--- a/target/msm7627_surf/rules.mk
+++ b/target/msm7627_surf/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 1007014
-
 BASE_ADDR        := 0x00200000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -27,7 +25,6 @@
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
 	MEMBASE=$(MEMBASE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/msm7630_surf/init.c b/target/msm7630_surf/init.c
index 63dff0b..35332ca 100644
--- a/target/msm7630_surf/init.c
+++ b/target/msm7630_surf/init.c
@@ -35,6 +35,21 @@
 #include <dev/gpio_keypad.h>
 #include <lib/ptable.h>
 #include <dev/flash.h>
+#include <smem.h>
+
+#define LINUX_MACHTYPE_SURF  1007016
+#define LINUX_MACHTYPE_FFA   1007017
+#define LINUX_MACHTYPE_FLUID 1007018
+
+//Enum values for 7x30 target platforms.
+enum platform
+{
+    HW_PLATFORM_UNKNOWN = 0,
+    HW_PLATFORM_SURF    = 1,
+    HW_PLATFORM_FFA     = 2,
+    HW_PLATFORM_FLUID   = 3,
+    HW_PLATFORM_32BITS  = 0x7FFFFFFF
+};
 
 static struct ptable flash_ptable;
 
@@ -110,3 +125,35 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    struct smem_board_info board_info;
+    unsigned int board_info_struct_len = sizeof(board_info);
+    enum platform platform_type = 0;
+    unsigned smem_status;
+
+    smem_status = smem_read_alloc_entry(SMEM_BOARD_INFO_LOCATION,
+					&board_info, board_info_struct_len );
+    if(smem_status)
+    {
+      dprintf(CRITICAL, "ERROR: unable to read shared memory for Hardware Platform\n");
+    }
+
+    if (board_info.format == 3)
+    {
+        platform_type = board_info.hw_platform;
+        switch (platform_type)
+	{
+	case HW_PLATFORM_SURF:
+	    return LINUX_MACHTYPE_SURF;
+	case HW_PLATFORM_FFA:
+	    return LINUX_MACHTYPE_FFA;
+	case HW_PLATFORM_FLUID:
+	    return LINUX_MACHTYPE_FLUID;
+	default:
+            return LINUX_MACHTYPE_SURF;
+	}
+    }
+    return LINUX_MACHTYPE_SURF;
+}
diff --git a/target/msm7630_surf/rules.mk b/target/msm7630_surf/rules.mk
index 8a81573..8bbb0f6 100644
--- a/target/msm7630_surf/rules.mk
+++ b/target/msm7630_surf/rules.mk
@@ -1,14 +1,12 @@
 LOCAL_DIR := $(GET_LOCAL_DIR)
 
-INCLUDES += -I$(LOCAL_DIR)/include
+INCLUDES += -I$(LOCAL_DIR)/include -I$(LK_TOP_DIR)/platform/msm_shared
 
 PLATFORM := msm7x30
 
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 1007016
-
 BASE_ADDR        := 0x00200000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -26,7 +24,6 @@
 
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/qsd8250_ffa/init.c b/target/qsd8250_ffa/init.c
index d63c9e4..f3e9a70 100644
--- a/target/qsd8250_ffa/init.c
+++ b/target/qsd8250_ffa/init.c
@@ -36,6 +36,8 @@
 #include <lib/ptable.h>
 #include <dev/flash.h>
 
+#define LINUX_MACHTYPE  1008002
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -110,3 +112,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/qsd8250_ffa/rules.mk b/target/qsd8250_ffa/rules.mk
index cdbf632..fd3f974 100644
--- a/target/qsd8250_ffa/rules.mk
+++ b/target/qsd8250_ffa/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 1008002
-
 BASE_ADDR        := 0x20000000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -24,7 +22,6 @@
 
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/qsd8250_surf/init.c b/target/qsd8250_surf/init.c
index d63c9e4..9769a4c 100644
--- a/target/qsd8250_surf/init.c
+++ b/target/qsd8250_surf/init.c
@@ -36,6 +36,8 @@
 #include <lib/ptable.h>
 #include <dev/flash.h>
 
+#define LINUX_MACHTYPE  1008000
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -110,3 +112,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/qsd8250_surf/rules.mk b/target/qsd8250_surf/rules.mk
index 48c566d..fd3f974 100644
--- a/target/qsd8250_surf/rules.mk
+++ b/target/qsd8250_surf/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 1008000
-
 BASE_ADDR        := 0x20000000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -24,7 +22,6 @@
 
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/surf-msm7k/init.c b/target/surf-msm7k/init.c
index e559ef8..956ea49 100644
--- a/target/surf-msm7k/init.c
+++ b/target/surf-msm7k/init.c
@@ -37,6 +37,8 @@
 
 #define BOARD_FLASH_OFFSET	378
 
+#define LINUX_MACHTYPE  0x0000059F
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -111,3 +113,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/surf-msm7k/rules.mk b/target/surf-msm7k/rules.mk
index b762c13..53828fc 100644
--- a/target/surf-msm7k/rules.mk
+++ b/target/surf-msm7k/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 0x0000059F
-
 BASE_ADDR        := 0x10000000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -27,7 +25,6 @@
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
 	MEMBASE=$(MEMBASE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	BASE_ADDR=$(BASE_ADDR) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
diff --git a/target/surf-qsd8k/init.c b/target/surf-qsd8k/init.c
index e559ef8..ac21f56 100644
--- a/target/surf-qsd8k/init.c
+++ b/target/surf-qsd8k/init.c
@@ -37,6 +37,8 @@
 
 #define BOARD_FLASH_OFFSET	378
 
+#define LINUX_MACHTYPE  0x00000811
+
 static struct ptable flash_ptable;
 
 /* for these partitions, start will be offset by either what we get from
@@ -111,3 +113,8 @@
 	ptable_dump(&flash_ptable);
 	flash_set_ptable(&flash_ptable);
 }
+
+unsigned board_machtype(void)
+{
+    return LINUX_MACHTYPE;
+}
diff --git a/target/surf-qsd8k/rules.mk b/target/surf-qsd8k/rules.mk
index 46a413c..6a7e330 100644
--- a/target/surf-qsd8k/rules.mk
+++ b/target/surf-qsd8k/rules.mk
@@ -7,8 +7,6 @@
 MEMBASE := 0x00000000 # SMI
 MEMSIZE := 0x00800000 # 8MB
 
-LINUX_MACHTYPE   := 0x00000811
-
 BASE_ADDR        := 0x20000000
 
 TAGS_ADDR        := BASE_ADDR+0x00000100
@@ -24,7 +22,6 @@
 
 DEFINES += \
 	SDRAM_SIZE=$(MEMSIZE) \
-	LINUX_MACHTYPE=$(LINUX_MACHTYPE) \
 	TAGS_ADDR=$(TAGS_ADDR) \
 	BASE_ADDR=$(BASE_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \