[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/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;
+}