depends on PROC_FS
source arch/arm/plat-rk/rk_pm_tests/Kconfig
+source arch/arm/plat-rk/bid/Kconfig
if !ARCH_RK29
menu "Support for RK power manage"
obj-y += pwm.o
obj-$(CONFIG_RK_TIMER) += rk_timer.o
obj-$(CONFIG_RK_PM_TESTS) += rk_pm_tests/
+obj-$(CONFIG_BOARD_ID) += bid/
--- /dev/null
+menuconfig BOARD_ID\r
+ bool "board id support for OneImage solution"\r
+ default n \r
+\r
+choice
+ depends on BOARD_ID\r
+ prompt "board id type"\r
+ \r
+config BOARD_ID_FLASH\r
+bool "board id save in flash"\r
+\r
+config BOARD_ID_AUTO_XML\r
+bool "auto print cust.xml"\r
+ depends on BOARD_ID_FLASH\r
+\r
+config BOARD_ID_HW\r
+bool "board id get from hardware such as gpios"\r
+\r
+endchoice\r
--- /dev/null
+# rockchip board id select devices\r
+\r
+obj-$(CONFIG_BOARD_ID) += board-id.o\r
+obj-$(CONFIG_BOARD_ID_FLASH) += board-id-flash.o\r
+obj-$(CONFIG_BOARD_ID_HW) += board-id-hw.o\r
--- /dev/null
+#include <linux/kernel.h>\r
+#include <linux/irq.h>\r
+#include <linux/gpio.h>\r
+#include <linux/input.h>\r
+#include <linux/platform_device.h>\r
+#include <linux/fs.h>\r
+#include <linux/uaccess.h>\r
+#include <linux/miscdevice.h>\r
+#include <linux/circ_buf.h>\r
+#include <linux/interrupt.h>\r
+#include <linux/miscdevice.h>\r
+#include <mach/iomux.h>\r
+#include <mach/gpio.h>\r
+#include <asm/gpio.h>\r
+#include <linux/delay.h>\r
+#include <linux/poll.h>\r
+#include <linux/wait.h>\r
+#include <linux/wakelock.h>\r
+#include <linux/workqueue.h>\r
+#include <linux/slab.h>\r
+#include <linux/proc_fs.h>\r
+\r
+\r
+#include <linux/file.h>\r
+#include <linux/mm.h>\r
+#include <linux/list.h>\r
+#include <linux/debugfs.h>\r
+#include <linux/mempolicy.h>\r
+#include <linux/sched.h>\r
+#include <asm/io.h>\r
+#include <asm/uaccess.h>\r
+#include <asm/cacheflush.h>\r
+#include <linux/fb.h>\r
+#include <plat/ipp.h>\r
+\r
+\r
+#include <linux/board-id.h>\r
+\r
+\r
+extern struct board_id_private_data *g_board_id;\r
+\r
+#if defined(CONFIG_BOARD_ID_AUTO_XML)\r
+\r
+#define MAX_BUF_LEN 200\r
+static ssize_t board_id_proc_write(struct file *file, const char __user *buffer,\r
+ size_t count, loff_t *data)\r
+{\r
+ char c;\r
+ int rc;\r
+ int i = 0, num = 0, j = 0;\r
+ struct board_id_private_data *board_id = g_board_id;\r
+ char buf[MAX_BUF_LEN];\r
+ struct device_id_name *device_id_name_start = board_id->tp_id_name; \r
+ struct area_id_name *area_id_name_start = board_id->area_area_id_name;\r
+ int max_id = TP_ID_NUMS + LCD_ID_NUMS + KEY_ID_NUMS + CODEC_ID_NUMS + WIFI_ID_NUMS + BT_ID_NUMS + GPS_ID_NUMS + FM_ID_NUMS + MODEM_ID_NUMS + DDR_ID_NUMS + FLASH_ID_NUMS + HDMI_ID_NUMS\r
+ + BATTERY_ID_NUMS + CHARGE_ID_NUMS + BACKLIGHT_ID_NUMS + HEADSET_ID_NUMS + MICPHONE_ID_NUMS + SPEAKER_ID_NUMS + VIBRATOR_ID_NUMS + TV_ID_NUMS\r
+ + ECHIP_ID_NUMS + HUB_ID_NUMS + TPAD_ID_NUMS + PMIC_ID_NUMS + REGULATOR_ID_NUMS + RTC_ID_NUMS + CAMERA_FRONT_ID_NUMS + CAMERA_BACK_ID_NUMS + ANGLE_ID_NUMS + ACCEL_ID_NUMS\r
+ + COMPASS_ID_NUMS + GYRO_ID_NUMS + LIGHT_ID_NUMS + PROXIMITY_ID_NUMS + TEMPERATURE_ID_NUMS + PRESSURE_ID_NUMS;\r
+ \r
+ rc = get_user(c, buffer);\r
+ if (rc)\r
+ {\r
+ atomic_set(&board_id->flags.debug_flag, 0);\r
+ return rc; \r
+ }\r
+\r
+ \r
+ num = c - '0';\r
+\r
+ printk("%s command list:debug close:0,debug enable:1, create /data/board-id-data.txt :2, create /data/board-id-cust.xml:3, create /data/board-id-device.xml :4\n",__func__);\r
+\r
+ switch(num)\r
+ {\r
+ case 0:\r
+ case 1: \r
+ if(board_id)\r
+ atomic_set(&board_id->flags.debug_flag, num);\r
+ break;\r
+\r
+ case 2: \r
+ printk("%s:create /data/board-id-data.txt file\n",__func__);\r
+ if(!board_id->board_id_data_filp)\r
+ board_id->board_id_data_filp = filp_open("/data/board-id-data.txt",O_CREAT|O_TRUNC|O_RDWR,0);\r
+\r
+ if (board_id->board_id_data_filp)\r
+ {\r
+ board_id->board_id_data_fs = get_fs();\r
+ set_fs(get_ds());\r
+ }\r
+ \r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ for(i=0; i<max_id; i++)\r
+ { \r
+ if(device_id_name_start->type && *device_id_name_start->dev_name)\r
+ {\r
+ snprintf(buf, MAX_BUF_LEN, "type=%d,id=%d,name=%s:%s,%d", device_id_name_start->type, device_id_name_start->id, device_id_name_start->dev_name, device_id_name_start->description, device_id_name_start->device_id); \r
+ buf[MAX_BUF_LEN-1] = '\n';\r
+ board_id->board_id_data_filp->f_op->write(board_id->board_id_data_filp, buf, MAX_BUF_LEN, &board_id->board_id_data_filp->f_pos);\r
+ }\r
+ memset(buf,0,MAX_BUF_LEN);\r
+ device_id_name_start++;\r
+ }\r
+\r
+ memset(buf, '\n', MAX_BUF_LEN);\r
+ board_id->board_id_data_filp->f_op->write(board_id->board_id_data_filp, buf, 3, &board_id->board_id_data_filp->f_pos); \r
+ device_id_name_start = board_id->device_selected;\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ for(i=0; i<DEVICE_NUM_TYPES; i++)\r
+ { \r
+ if(device_id_name_start->type && *device_id_name_start->dev_name)\r
+ {\r
+ snprintf(buf, MAX_BUF_LEN, "device_selected: type=%d,id=%d,name=%s:%s,%d", device_id_name_start->type, device_id_name_start->id, device_id_name_start->dev_name, device_id_name_start->description, device_id_name_start->device_id); \r
+ buf[MAX_BUF_LEN-1] = '\n';\r
+ board_id->board_id_data_filp->f_op->write(board_id->board_id_data_filp, buf, MAX_BUF_LEN, &board_id->board_id_data_filp->f_pos); \r
+ }\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ device_id_name_start++;\r
+ }\r
+\r
+ memset(buf, '\n', MAX_BUF_LEN);\r
+ board_id->board_id_data_filp->f_op->write(board_id->board_id_data_filp, buf, 3, &board_id->board_id_data_filp->f_pos); \r
+ area_id_name_start = board_id->area_area_id_name;\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ for(i=AREA_ID_NULL; i<AREA_ID_NUMS+1; i++)\r
+ { \r
+ if(area_id_name_start->type && (strlen(area_id_name_start->locale_language) > 0))\r
+ {\r
+ if(i == AREA_ID_NUMS)\r
+ snprintf(buf, MAX_BUF_LEN, "area_selected: type=%d,id=%d,name=%s_%s", area_id_name_start->type, area_id_name_start->id, area_id_name_start->locale_language, area_id_name_start->locale_region);\r
+ else\r
+ snprintf(buf, MAX_BUF_LEN, "type=%d,id=%d,name=%s_%s", area_id_name_start->type, area_id_name_start->id, area_id_name_start->locale_language, area_id_name_start->locale_region); \r
+ buf[MAX_BUF_LEN-1] = '\n';\r
+ board_id->board_id_data_filp->f_op->write(board_id->board_id_data_filp, buf, MAX_BUF_LEN, &board_id->board_id_data_filp->f_pos); \r
+ }\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ area_id_name_start++;\r
+ }\r
+\r
+ \r
+ break;\r
+\r
+ case 3: \r
+ \r
+ if(!board_id->board_id_area_filp)\r
+ board_id->board_id_area_filp = filp_open("/data/board-id-cust.xml",O_CREAT|O_TRUNC|O_RDWR,0);\r
+\r
+ if (board_id->board_id_area_filp)\r
+ {\r
+ board_id->board_id_area_fs = get_fs();\r
+ set_fs(get_ds());\r
+ }\r
+\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", 40, &board_id->board_id_area_filp->f_pos);\r
+\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, "<cust>\n", 7, &board_id->board_id_area_filp->f_pos); \r
+ \r
+ area_id_name_start = board_id->area_area_id_name;\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ for(i=AREA_ID_NULL; i<AREA_ID_NUMS; i++)\r
+ { \r
+ if(area_id_name_start->type && (strlen(area_id_name_start->locale_language) > 0) && (strlen(area_id_name_start->locale_region) > 0))\r
+ \r
+ {\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t<if tid=\"%d\" bid=\"%d\" area=\"%s\">\n",area_id_name_start->type, area_id_name_start->id, area_id_name_start->country_area); \r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<set name=\"persist.sys.language\" value=\"%s\"/>\n\t\t<set name=\"persist.sys.country\" value=\"%s\"/>\n\t\t<set name=\"persist.sys.timezone\" value=\"%s\"/>\n", area_id_name_start->locale_language, area_id_name_start->locale_region, area_id_name_start->timezone);\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<set name=\"ro.product.locale.language\" value=\"%s\"/>\n\t\t<set name=\"ro.product.locale.region\" value=\"%s\"/>\n", area_id_name_start->locale_language, area_id_name_start->locale_region);\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+ //memset(buf, 0, MAX_BUF_LEN);\r
+ //snprintf(buf, MAX_BUF_LEN, "\t\t<cp src=\"cust/app/area.apk\" des=\"system/app/area.apk\" mode=\"0644\"/>\n \t\t<rm src=\"system/app/area.apk\" />\n"); \r
+ //board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+ for(j=0; j<GMS_ID_NUMS; j++)\r
+ {\r
+ if(xml_config[i].gms_flag[j])\r
+ {\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<rm src=\"cust/app/%s\" des=\"system/app/%s\" mode=\"0644\"/>\n", gms_name[j].gms_name, gms_name[j].gms_name); \r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+ }\r
+ }\r
+ \r
+ //</if> \r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t</if>\n"); \r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+ \r
+ }\r
+ \r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ if(i < AREA_ID_NUMS)\r
+ area_id_name_start++;\r
+ \r
+ }\r
+ \r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t<if area=\"!China\" language=\"!zh\" local=\"!CN\">\n");\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos);\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<cp src=\"cust/app/area.apk\" des=\"system/app/area.apk\" mode=\"0644\"/>\n \t\t<rm src=\"system/app/area.apk\" />\n\t</if>\n"); \r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, buf, MAX_BUF_LEN, &board_id->board_id_area_filp->f_pos); \r
+\r
+ board_id->board_id_area_filp->f_op->write(board_id->board_id_area_filp, "</cust>\n", 8, &board_id->board_id_area_filp->f_pos);\r
+ \r
+ printk("%s:/data/board-id-cust.xml file\n",__func__);\r
+ break;\r
+\r
+\r
+ case 4: \r
+ if(!board_id->board_id_device_filp)\r
+ board_id->board_id_device_filp = filp_open("/data/board-id-device.xml",O_CREAT|O_TRUNC|O_RDWR,0);\r
+\r
+ if (board_id->board_id_device_filp)\r
+ {\r
+ board_id->board_id_device_fs = get_fs();\r
+ set_fs(get_ds());\r
+ }\r
+ \r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", 40, &board_id->board_id_device_filp->f_pos);\r
+\r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, "<device>\n", 9, &board_id->board_id_device_filp->f_pos); \r
+ \r
+ device_id_name_start = board_id->tp_id_name;\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+\r
+ for(i=DEVICE_TYPE_TP; i<DEVICE_NUM_TYPES; i++)\r
+ { \r
+ device_id_name_start = board_id->device_start_addr[i];\r
+ \r
+ device_id_name_start = board_id->tp_id_name;\r
+ \r
+ for(j=0; j<max_id; j++)\r
+ { \r
+ if((device_id_name_start->type == i) && (strlen(device_id_name_start->dev_name) > 0))\r
+ {\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t<if tid=\"%d\" bid=\"%d\" type=\"%s\" dev=\"%s\" desc=\"%s\">\n", device_id_name_start->type, device_id_name_start->id, device_id_name_start->type_name, device_id_name_start->dev_name, device_id_name_start->description); \r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, buf, MAX_BUF_LEN, &board_id->board_id_device_filp->f_pos);\r
+\r
+ if(DEVICE_TYPE_KEY == device_id_name_start->type)\r
+ {\r
+ memset(buf, 0, MAX_BUF_LEN); //added by luodh\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<set name=\"ro.product.locale.keylayout\" value=\"%s\"/>\n", device_id_name_start->dev_name);\r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, buf, MAX_BUF_LEN, &board_id->board_id_device_filp->f_pos); \r
+ }\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t\t<cp src=\"cust/so/type.dev.so\" des=\"system/lib/hw/type.dev.so\" mode=\"0644\"/>\n \t\t<rm src=\"system/lib/hw/type.dev.so\"/>\n"); \r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, buf, MAX_BUF_LEN, &board_id->board_id_device_filp->f_pos); \r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+ snprintf(buf, MAX_BUF_LEN, "\t</if>\n");\r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, buf, MAX_BUF_LEN, &board_id->board_id_device_filp->f_pos);\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+\r
+ //printk("%s:type=%d,id=%d\n",__func__,device_id_name_start->type, device_id_name_start->id);\r
+ \r
+ } \r
+ \r
+ device_id_name_start++; \r
+\r
+ }\r
+\r
+ memset(buf, 0, MAX_BUF_LEN);\r
+\r
+ } \r
+ \r
+ //board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, "\t</type>\n", 9, &board_id->board_id_device_filp->f_pos);\r
+ \r
+ board_id->board_id_device_filp->f_op->write(board_id->board_id_device_filp, "</device>\n", 10, &board_id->board_id_device_filp->f_pos);\r
+ \r
+ printk("%s:/data/board-id-device.xml file\n",__func__);\r
+ break;\r
+\r
+ default:\r
+ break;\r
+\r
+ }\r
+ \r
+ printk("%s %d\n", __func__, __LINE__);\r
+ return count; \r
+}\r
+\r
+static const struct file_operations board_id_proc_fops = {\r
+ .owner = THIS_MODULE, \r
+ .write = board_id_proc_write,\r
+};\r
+\r
+#endif\r
+\r
+static int board_id_open(struct inode *inode, struct file *file)\r
+{\r
+ struct board_id_private_data *board_id = g_board_id;\r
+ \r
+ return 0;\r
+}\r
+\r
+static int board_id_release(struct inode *inode, struct file *file)\r
+{ \r
+ struct board_id_private_data *board_id = g_board_id;\r
+\r
+ return 0;\r
+}\r
+\r
+static struct device_id_name device_selected[DEVICE_NUM_TYPES]; \r
+\r
+static long board_id_ioctl(struct file *file, unsigned int cmd, unsigned long arg)\r
+{\r
+ struct board_id_private_data *board_id = g_board_id;\r
+ void __user *argp = (void __user *)arg;\r
+ struct area_id_name area_select = board_id->area_select;\r
+ struct operator_id_name operator_select = board_id->operator_select;\r
+ struct reserve_id_name reserve_select = board_id->reserve_select;\r
+ struct device_id_name device_selected_temp, device_selected_last_temp;\r
+ struct area_id_name language_last_select; \r
+ struct operator_id_name operator_last_select;\r
+ struct reserve_id_name reserve_last_select;\r
+ int result = 0;\r
+ int i = 0;\r
+ switch(cmd)\r
+ {\r
+ case BOARD_ID_IOCTL_READ_AREA_ID:\r
+ mutex_lock(&board_id->operation_mutex);\r
+ if(copy_to_user(argp, &area_select, sizeof(struct area_id_name)))\r
+ {\r
+ printk("%s:fail to copy area_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_LANGUAGE_ID:%s_%s\n",__func__,area_select.locale_language,area_select.locale_region);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ break;\r
+\r
+ case BOARD_ID_IOCTL_READ_OPERATOR_ID:\r
+ mutex_lock(&board_id->operation_mutex);\r
+ if(copy_to_user(argp, &operator_select, sizeof(struct operator_id_name)))\r
+ {\r
+ printk("%s:fail to copy operator_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_operator_ID:%s_%s\n",__func__,operator_select.operator_name,operator_select.locale_region);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ break;\r
+\r
+ case BOARD_ID_IOCTL_READ_RESERVE_ID:\r
+ mutex_lock(&board_id->operation_mutex);\r
+ if(copy_to_user(argp, &reserve_select, sizeof(struct reserve_id_name)))\r
+ {\r
+ printk("%s:fail to copy reserve_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_RESERVE_ID:%s,%s\n",__func__,reserve_select.reserve_name, reserve_select.locale_region);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ break;\r
+\r
+ case BOARD_ID_IOCTL_READ_STATUS:\r
+ mutex_lock(&board_id->operation_mutex);\r
+ if(copy_to_user(argp, &board_id->vendor_data[DEVICE_TYPE_STATUS], sizeof(board_id->vendor_data[DEVICE_TYPE_STATUS])))\r
+ {\r
+ printk("%s:line=%d:fail to copy vendor_data to user\n",__func__,__LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ }\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_STATUS=0x%x\n",__func__,board_id->vendor_data[DEVICE_TYPE_STATUS]);\r
+ break;\r
+\r
+ case BOARD_ID_IOCTL_READ_VENDOR_DATA: \r
+ mutex_lock(&board_id->operation_mutex); \r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_VENDOR_DATA:\n",__func__);\r
+ if(copy_to_user(argp, board_id->vendor_data, sizeof(board_id->vendor_data)))\r
+ {\r
+ printk("%s:line=%d:fail to copy vendor_data to user\n",__func__,__LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ }\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ \r
+ break;\r
+ \r
+ }\r
+ \r
+ mutex_lock(&board_id->operation_mutex); \r
+ switch(cmd)\r
+ { \r
+ \r
+ case BOARD_ID_IOCTL_READ_TP_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_TP];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_LCD_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_LCD];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_KEY_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_KEY];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_CODEC_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_CODEC];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_WIFI_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_WIFI];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_BT_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_BT];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_GPS_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_GPS];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_FM_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_FM];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_MODEM_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_MODEM];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_DDR_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_DDR];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_FLASH_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_FLASH];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_HDMI_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_HDMI];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_BATTERY_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_BATTERY];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_CHARGE_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_CHARGE];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_BACKLIGHT_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_BACKLIGHT];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_HEADSET_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_HEADSET];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_MICPHONE_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_MICPHONE];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SPEAKER_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_SPEAKER];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_VIBRATOR_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_VIBRATOR];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_TV_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_TV];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_ECHIP_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_ECHIP];\r
+ break; \r
+ case BOARD_ID_IOCTL_READ_HUB_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_HUB];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_TPAD_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_TPAD];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_PMIC_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_PMIC];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_REGULATOR_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_REGULATOR];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_RTC_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_RTC];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_CAMERA_FRONT_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_CAMERA_FRONT];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_CAMERA_BACK_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_CAMERA_BACK];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_ANGLE_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_ANGLE];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_ACCEL_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_ACCEL];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_COMPASS_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_COMPASS];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_GYRO_ID : \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_GYRO];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_LIGHT_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_LIGHT];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_PROXIMITY_ID:\r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_PROXIMITY];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_TEMPERATURE_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_TEMPERATURE];\r
+ break;\r
+ case BOARD_ID_IOCTL_READ_SENSOR_PRESSURE_ID: \r
+ device_selected_temp = board_id->device_selected[DEVICE_TYPE_PRESSURE];\r
+ break;\r
+ \r
+ case BOARD_ID_IOCTL_WRITE_TP_ID: \r
+ case BOARD_ID_IOCTL_WRITE_LCD_ID: \r
+ case BOARD_ID_IOCTL_WRITE_KEY_ID: \r
+ case BOARD_ID_IOCTL_WRITE_CODEC_ID: \r
+ case BOARD_ID_IOCTL_WRITE_WIFI_ID: \r
+ case BOARD_ID_IOCTL_WRITE_BT_ID: \r
+ case BOARD_ID_IOCTL_WRITE_GPS_ID: \r
+ case BOARD_ID_IOCTL_WRITE_FM_ID: \r
+ case BOARD_ID_IOCTL_WRITE_MODEM_ID: \r
+ case BOARD_ID_IOCTL_WRITE_DDR_ID: \r
+ case BOARD_ID_IOCTL_WRITE_FLASH_ID: \r
+ case BOARD_ID_IOCTL_WRITE_HDMI_ID: \r
+ case BOARD_ID_IOCTL_WRITE_BATTERY_ID: \r
+ case BOARD_ID_IOCTL_WRITE_CHARGE_ID: \r
+ case BOARD_ID_IOCTL_WRITE_BACKLIGHT_ID: \r
+ case BOARD_ID_IOCTL_WRITE_HEADSET_ID: \r
+ case BOARD_ID_IOCTL_WRITE_MICPHONE_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SPEAKER_ID: \r
+ case BOARD_ID_IOCTL_WRITE_VIBRATOR_ID: \r
+ case BOARD_ID_IOCTL_WRITE_TV_ID: \r
+ case BOARD_ID_IOCTL_WRITE_ECHIP_ID:\r
+ case BOARD_ID_IOCTL_WRITE_HUB_ID:\r
+ case BOARD_ID_IOCTL_WRITE_PMIC_ID: \r
+ case BOARD_ID_IOCTL_WRITE_REGULATOR_ID: \r
+ case BOARD_ID_IOCTL_WRITE_RTC_ID: \r
+ case BOARD_ID_IOCTL_WRITE_CAMERA_FRONT_ID: \r
+ case BOARD_ID_IOCTL_WRITE_CAMERA_BACK_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_ANGLE_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_ACCEL_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_COMPASS_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_GYRO_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_LIGHT_ID: \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_PROXIMITY_ID:\r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_TEMPERATURE_ID:\r
+ case BOARD_ID_IOCTL_READ_DEVICE_NAME_BY_ID:\r
+ if(copy_from_user(&device_selected_temp, argp, sizeof(struct device_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy device_id_name from user\n",__func__, __LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:write: type=%d,id=%d,name=%s\n",__func__, (int)device_selected_temp.type, (int)device_selected_temp.id, device_selected_temp.dev_name);\r
+ break;\r
+ \r
+ } \r
+\r
+ switch(cmd)\r
+ { \r
+ case BOARD_ID_IOCTL_READ_TP_ID:\r
+ case BOARD_ID_IOCTL_READ_LCD_ID:\r
+ case BOARD_ID_IOCTL_READ_KEY_ID:\r
+ case BOARD_ID_IOCTL_READ_CODEC_ID:\r
+ case BOARD_ID_IOCTL_READ_WIFI_ID:\r
+ case BOARD_ID_IOCTL_READ_BT_ID:\r
+ case BOARD_ID_IOCTL_READ_GPS_ID:\r
+ case BOARD_ID_IOCTL_READ_FM_ID:\r
+ case BOARD_ID_IOCTL_READ_MODEM_ID:\r
+ case BOARD_ID_IOCTL_READ_DDR_ID:\r
+ case BOARD_ID_IOCTL_READ_FLASH_ID:\r
+ case BOARD_ID_IOCTL_READ_HDMI_ID:\r
+ case BOARD_ID_IOCTL_READ_BATTERY_ID:\r
+ case BOARD_ID_IOCTL_READ_CHARGE_ID:\r
+ case BOARD_ID_IOCTL_READ_BACKLIGHT_ID:\r
+ case BOARD_ID_IOCTL_READ_HEADSET_ID:\r
+ case BOARD_ID_IOCTL_READ_MICPHONE_ID:\r
+ case BOARD_ID_IOCTL_READ_SPEAKER_ID:\r
+ case BOARD_ID_IOCTL_READ_VIBRATOR_ID: \r
+ case BOARD_ID_IOCTL_READ_TV_ID:\r
+ case BOARD_ID_IOCTL_READ_ECHIP_ID:\r
+ case BOARD_ID_IOCTL_READ_HUB_ID: \r
+ case BOARD_ID_IOCTL_READ_PMIC_ID:\r
+ case BOARD_ID_IOCTL_READ_REGULATOR_ID: \r
+ case BOARD_ID_IOCTL_READ_RTC_ID:\r
+ case BOARD_ID_IOCTL_READ_CAMERA_FRONT_ID: \r
+ case BOARD_ID_IOCTL_READ_CAMERA_BACK_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_ANGLE_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_ACCEL_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_COMPASS_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_GYRO_ID : \r
+ case BOARD_ID_IOCTL_READ_SENSOR_LIGHT_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_PROXIMITY_ID:\r
+ case BOARD_ID_IOCTL_READ_SENSOR_TEMPERATURE_ID: \r
+ case BOARD_ID_IOCTL_READ_SENSOR_PRESSURE_ID: \r
+ if(copy_to_user(argp, &device_selected_temp, sizeof(struct device_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy device_selected_temp.dev_name=%s to user\n",__func__,__LINE__,device_selected_temp.dev_name); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:read: type=%d,id=%d,name=%s\n",__func__, (int)device_selected_temp.type, (int)device_selected_temp.id, device_selected_temp.dev_name);\r
+ break;\r
+ \r
+\r
+\r
+ case BOARD_ID_IOCTL_WRITE_TP_ID:\r
+ board_id->device_selected[DEVICE_TYPE_TP] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_LCD_ID:\r
+ board_id->device_selected[DEVICE_TYPE_LCD] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_KEY_ID:\r
+ board_id->device_selected[DEVICE_TYPE_KEY] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_CODEC_ID:\r
+ board_id->device_selected[DEVICE_TYPE_CODEC] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_WIFI_ID:\r
+ board_id->device_selected[DEVICE_TYPE_WIFI] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_BT_ID:\r
+ board_id->device_selected[DEVICE_TYPE_BT] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_GPS_ID:\r
+ board_id->device_selected[DEVICE_TYPE_GPS] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_FM_ID:\r
+ board_id->device_selected[DEVICE_TYPE_FM] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_MODEM_ID:\r
+ board_id->device_selected[DEVICE_TYPE_MODEM] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_DDR_ID:\r
+ board_id->device_selected[DEVICE_TYPE_DDR] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_FLASH_ID:\r
+ board_id->device_selected[DEVICE_TYPE_FLASH] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_HDMI_ID:\r
+ board_id->device_selected[DEVICE_TYPE_HDMI] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_BATTERY_ID:\r
+ board_id->device_selected[DEVICE_TYPE_BATTERY] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_CHARGE_ID:\r
+ board_id->device_selected[DEVICE_TYPE_CHARGE] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_BACKLIGHT_ID:\r
+ board_id->device_selected[DEVICE_TYPE_BACKLIGHT] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_HEADSET_ID:\r
+ board_id->device_selected[DEVICE_TYPE_HEADSET] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_MICPHONE_ID:\r
+ board_id->device_selected[DEVICE_TYPE_MICPHONE] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SPEAKER_ID:\r
+ board_id->device_selected[DEVICE_TYPE_SPEAKER] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_VIBRATOR_ID:\r
+ board_id->device_selected[DEVICE_TYPE_VIBRATOR] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_TV_ID:\r
+ board_id->device_selected[DEVICE_TYPE_TV] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_ECHIP_ID:\r
+ board_id->device_selected[DEVICE_TYPE_ECHIP] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_HUB_ID:\r
+ board_id->device_selected[DEVICE_TYPE_HUB] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_TPAD_ID:\r
+ board_id->device_selected[DEVICE_TYPE_TPAD] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_PMIC_ID:\r
+ board_id->device_selected[DEVICE_TYPE_PMIC] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_REGULATOR_ID:\r
+ board_id->device_selected[DEVICE_TYPE_REGULATOR] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_RTC_ID:\r
+ board_id->device_selected[DEVICE_TYPE_RTC] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_CAMERA_FRONT_ID:\r
+ board_id->device_selected[DEVICE_TYPE_CAMERA_FRONT] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_CAMERA_BACK_ID:\r
+ board_id->device_selected[DEVICE_TYPE_CAMERA_BACK] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_ANGLE_ID:\r
+ board_id->device_selected[DEVICE_TYPE_ANGLE] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_ACCEL_ID:\r
+ board_id->device_selected[DEVICE_TYPE_ACCEL] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_COMPASS_ID:\r
+ board_id->device_selected[DEVICE_TYPE_COMPASS] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_GYRO_ID:\r
+ board_id->device_selected[DEVICE_TYPE_GYRO] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_LIGHT_ID:\r
+ board_id->device_selected[DEVICE_TYPE_LIGHT] = device_selected_temp;\r
+ break; \r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_PROXIMITY_ID:\r
+ board_id->device_selected[DEVICE_TYPE_PROXIMITY] = device_selected_temp;\r
+ break;\r
+ case BOARD_ID_IOCTL_WRITE_SENSOR_TEMPERATURE_ID:\r
+ board_id->device_selected[DEVICE_TYPE_TEMPERATURE] = device_selected_temp;\r
+ break;\r
+ \r
+ }\r
+\r
+ \r
+ mutex_unlock(&board_id->operation_mutex);\r
+\r
+ switch(cmd)\r
+ {\r
+ case BOARD_ID_IOCTL_READ_DEVICE_NAME_BY_ID: \r
+ mutex_lock(&board_id->operation_mutex); \r
+ if(&board_id->device_start_addr[(unsigned)device_selected_temp.type][(unsigned)device_selected_temp.id])\r
+ memcpy(&device_selected_last_temp, &board_id->device_start_addr[(unsigned)device_selected_temp.type][(unsigned)device_selected_temp.id], sizeof(struct device_id_name));\r
+ else\r
+ {\r
+ printk("%s:fail to find device,type=%d,id=%d\n",__func__, device_selected_temp.type, device_selected_temp.id);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -1;\r
+ }\r
+ if(copy_to_user(argp, &device_selected_last_temp, sizeof(struct device_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy device_selected_last_temp.dev_name=%s to user\n",__func__,__LINE__,device_selected_last_temp.dev_name); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ }\r
+ DBG_ID("%s:read: type=%d,id=%d,name=%s\n",__func__, (int)device_selected_last_temp.type, (int)device_selected_last_temp.id, device_selected_last_temp.dev_name);\r
+ \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ break;\r
+\r
+ case BOARD_ID_IOCTL_READ_AREA_NAME_BY_ID:\r
+ mutex_lock(&board_id->operation_mutex); \r
+ if(copy_from_user(&language_last_select, argp, sizeof(struct area_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy area_id_name from user\n",__func__, __LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ } \r
+ \r
+ if(copy_to_user(argp, &board_id->area_area_id_name[language_last_select.id], sizeof(struct area_id_name)))\r
+ {\r
+ printk("%s:fail to copy area_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ \r
+ mutex_unlock(&board_id->operation_mutex);\r
+ \r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_LANGUAGE_NAME_BY_ID:%s_%s\n",__func__,language_last_select.locale_language,language_last_select.locale_region);\r
+ break; \r
+\r
+ case BOARD_ID_IOCTL_READ_OPERATOR_NAME_BY_ID:\r
+ mutex_lock(&board_id->operation_mutex); \r
+ if(copy_from_user(&operator_last_select, argp, sizeof(struct operator_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy operator_id_name from user\n",__func__, __LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ } \r
+\r
+ for(i=OPERATOR_ID_20000_NO_OPERATOR; i<OPERATOR_ID_NUMS; i++)\r
+ {\r
+ if(operator_last_select.id == board_id->area_operator_id_name[i].id)\r
+ {\r
+ if(copy_to_user(argp, &board_id->area_operator_id_name[i], sizeof(struct operator_id_name)))\r
+ {\r
+ printk("%s:fail to copy operator_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ }\r
+ }\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ \r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_OPERATOR_NAME_BY_ID:%s_%s\n",__func__,operator_last_select.operator_name,operator_last_select.locale_region);\r
+ break; \r
+\r
+ case BOARD_ID_IOCTL_READ_RESERVE_NAME_BY_ID:\r
+ mutex_lock(&board_id->operation_mutex); \r
+ if(copy_from_user(&reserve_last_select, argp, sizeof(struct reserve_id_name)))\r
+ {\r
+ printk("%s:line=%d:fail to copy reserve_id_name from user\n",__func__, __LINE__); \r
+ mutex_unlock(&board_id->operation_mutex); \r
+ return -EFAULT;\r
+ } \r
+ \r
+ if(copy_to_user(argp, &board_id->area_reserve_id_name[reserve_last_select.id], sizeof(struct reserve_id_name)))\r
+ {\r
+ printk("%s:fail to copy reserve_id_name to user\n",__func__);\r
+ mutex_unlock(&board_id->operation_mutex);\r
+ return -EFAULT;\r
+ }\r
+ \r
+ mutex_unlock(&board_id->operation_mutex);\r
+ \r
+ DBG_ID("%s:BOARD_ID_IOCTL_READ_RESERVE_NAME_BY_ID:%s_%s\n",__func__,reserve_last_select.reserve_name, reserve_last_select.locale_region);\r
+ break; \r
+ \r
+ }\r
+\r
+ DBG_ID("%s:cmd=%d\n",__func__,cmd);\r
+ return 0;\r
+}\r
+\r
+static int __init board_id_init(void)\r
+{\r
+ int result ; \r
+ struct proc_dir_entry *board_id_proc_entry;\r
+ \r
+ struct board_id_private_data *board_id = g_board_id;\r
+\r
+ if(!board_id)\r
+ return -1;\r
+\r
+ board_id->id_fops.owner = THIS_MODULE;\r
+ board_id->id_fops.open = board_id_open;\r
+ board_id->id_fops.release = board_id_release; \r
+ board_id->id_fops.unlocked_ioctl = board_id_ioctl;\r
+\r
+ board_id->id_miscdev.minor = MISC_DYNAMIC_MINOR;\r
+ board_id->id_miscdev.name = "board_id_misc";\r
+ board_id->id_miscdev.fops = &board_id->id_fops;\r
+ result = misc_register(&board_id->id_miscdev);\r
+ if(result < 0) {\r
+ printk("%s:misc_register err,ret=%d\n",__func__,result);\r
+ return result;\r
+ }\r
+\r
+ \r
+#if defined(CONFIG_BOARD_ID_AUTO_XML)\r
+ board_id_proc_entry = proc_create("driver/board_id_dbg", 0660, NULL, &board_id_proc_fops); \r
+#endif\r
+ board_id->board_id_data_filp = NULL; \r
+ board_id->board_id_area_filp = NULL; \r
+ board_id->board_id_device_filp = NULL;\r
+\r
+ printk("%s:\n",__func__);\r
+\r
+ return 0;\r
+ \r
+}\r
+\r
+static void __exit board_id_exit(void)\r
+{\r
+ struct board_id_private_data *board_id = g_board_id;\r
+\r
+ if(!board_id)\r
+ return ;\r
+\r
+ misc_deregister(&board_id->id_miscdev);\r
+\r
+ set_fs(board_id->board_id_data_fs);\r
+ filp_close(board_id->board_id_data_filp, NULL);\r
+\r
+ set_fs(board_id->board_id_area_fs);\r
+ filp_close(board_id->board_id_area_filp, NULL);\r
+\r
+ set_fs(board_id->board_id_device_fs);\r
+ filp_close(board_id->board_id_device_filp, NULL);\r
+}\r
+\r
+subsys_initcall_sync(board_id_init);\r
+module_exit(board_id_exit);\r
+\r
+MODULE_AUTHOR("ROCKCHIP Corporation:lw@rock-chips.com");\r
+MODULE_DESCRIPTION("rockchip board id misc interface for vendor");\r
+MODULE_LICENSE("GPL");\r
--- /dev/null
+#include <linux/kernel.h>\r
+#include <linux/init.h>\r
+#include <linux/platform_device.h>\r
+#include <linux/input.h>\r
+#include <linux/io.h>\r
+#include <linux/delay.h>\r
+#include <linux/i2c.h>\r
+#include <linux/skbuff.h>\r
+\r
+#include <mach/board.h>\r
+#include <mach/io.h>\r
+#include <mach/gpio.h>\r
+#include <mach/iomux.h>\r
+\r
+#include <linux/board-id.h>\r
+\r
+#if 0\r
+#define DBG(x...) printk(x)\r
+#else\r
+#define DBG(x...)\r
+#endif\r
+\r
+extern void kernel_restart(char *cmd);\r
+\r
+struct board_id_hw_private_data {\r
+ struct mutex id_mutex;\r
+ int last_value[16];\r
+ int board_id;\r
+ struct board_id_platform_data *pdata;\r
+};\r
+\r
+static struct board_id_hw_private_data *g_id;\r
+\r
+\r
+enum board_id_hw get_board_id_hw(void)\r
+{\r
+ struct board_id_hw_private_data *id = g_id;\r
+ DBG("%s:id:0x%x\n",__func__,id->board_id);\r
+ return id->board_id;\r
+}\r
+EXPORT_SYMBOL(get_board_id_hw);\r
+\r
+static int _get_board_id_hw(struct board_id_hw_private_data *id)\r
+{\r
+ int result = 0;\r
+ int value1 = 0, value2 = 0, value3 = 0;\r
+ int i = 0, j = 0;\r
+ \r
+ id->board_id = -1;\r
+ \r
+ for(i=0; i<id->pdata->num_gpio; i++)\r
+ {\r
+ gpio_request(id->pdata->gpio_pin[i],"gpio_board_id");\r
+ gpio_direction_input(id->pdata->gpio_pin[i]);\r
+ gpio_pull_updown(id->pdata->gpio_pin[i], PullDisable);\r
+ for(j=0; j<1000; j++)\r
+ {\r
+ value1 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+ if(value1 < 0)\r
+ continue;\r
+ mdelay(1);\r
+ value2 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+ if(value2 < 0)\r
+ continue;\r
+ mdelay(1);\r
+ value3 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+ if(value3 < 0)\r
+ continue;\r
+ if((value1 == value2) && (value2 == value3))\r
+ break;\r
+ }\r
+ if(j >= 1000)\r
+ {\r
+ printk("%s:hareware error,gpio level changed always!\n",__func__); \r
+ kernel_restart(NULL);\r
+ }\r
+ \r
+ result = (value1 << i) | result;\r
+ \r
+ DBG("%s:gpio:%d,value:%d\n",__func__,id->pdata->gpio_pin[i],value1);\r
+ }\r
+\r
+ id->board_id = result;\r
+\r
+ \r
+ DBG("%s:num=%d,id=0x%x\n",__func__,id->pdata->num_gpio, id->board_id);\r
+\r
+ return result;\r
+}\r
+\r
+\r
+static int __devinit board_id_hw_probe(struct platform_device *pdev)\r
+{\r
+ struct board_id_platform_data *pdata = pdev->dev.platform_data;\r
+ struct board_id_hw_private_data *id = NULL;\r
+ int result = 0;\r
+\r
+ if(!pdata)\r
+ return -ENOMEM;\r
+ \r
+ id = kzalloc(sizeof(struct board_id_hw_private_data), GFP_KERNEL);\r
+ if (id == NULL) {\r
+ dev_err(&pdev->dev, "Unable to allocate private data\n");\r
+ return -ENOMEM;\r
+ }\r
+\r
+ id->pdata = pdata;\r
+ \r
+ if(pdata->init_platform_hw)\r
+ pdata->init_platform_hw();\r
+ \r
+ result = _get_board_id_hw(id);\r
+\r
+ if(pdata->init_parameter)\r
+ pdata->init_parameter(id->board_id);\r
+\r
+ if(pdata->exit_platform_hw)\r
+ pdata->exit_platform_hw();\r
+ \r
+ platform_set_drvdata(pdev, id); \r
+ g_id = id;\r
+ \r
+ printk("%s:board id :0x%x\n",__func__,result);\r
+ return 0;\r
+}\r
+\r
+static int __devexit board_id_hw_remove(struct platform_device *pdev)\r
+{\r
+ //struct board_id_platform_data *pdata = pdev->dev.platform_data;\r
+ struct board_id_hw_private_data *id = platform_get_drvdata(pdev);\r
+ \r
+ kfree(id);\r
+ \r
+ return 0;\r
+}\r
+\r
+static struct platform_driver board_id_hw_driver = {\r
+ .probe = board_id_hw_probe,\r
+ .remove = __devexit_p(board_id_hw_remove),\r
+ .driver = {\r
+ .name = "board_id_hw",\r
+ .owner = THIS_MODULE,\r
+ },\r
+};\r
+\r
+static int __init board_id_hw_init(void)\r
+{\r
+ return platform_driver_register(&board_id_hw_driver);\r
+}\r
+\r
+static void __exit board_id_hw_exit(void)\r
+{\r
+ platform_driver_unregister(&board_id_hw_driver);\r
+}\r
+\r
+arch_initcall_sync(board_id_hw_init);\r
+module_exit(board_id_hw_exit);\r
+\r
+MODULE_AUTHOR("ROCKCHIP Corporation:lw@rock-chips.com");\r
+MODULE_DESCRIPTION("Interface for get board id");\r
+MODULE_LICENSE("GPL");\r
+\r
+\r
--- /dev/null
+#include <linux/module.h>\r
+#include <linux/kernel.h>\r
+#include <linux/irq.h>\r
+#include <linux/gpio.h>\r
+#include <linux/input.h>\r
+#include <linux/platform_device.h>\r
+#include <linux/fs.h>\r
+#include <linux/uaccess.h>\r
+#include <linux/miscdevice.h>\r
+#include <linux/circ_buf.h>\r
+#include <linux/interrupt.h>\r
+#include <linux/miscdevice.h>\r
+#include <mach/iomux.h>\r
+#include <mach/gpio.h>\r
+#include <asm/gpio.h>\r
+#include <linux/delay.h>\r
+#include <linux/poll.h>\r
+#include <linux/wait.h>\r
+#include <linux/wakelock.h>\r
+#include <linux/workqueue.h>\r
+#include <linux/slab.h>\r
+#include <linux/spi/spi.h>\r
+#include <mach/board.h>\r
+#include <linux/board-id.h>\r
+\r
+\r
+struct board_id_private_data *g_board_id;\r
+\r
+extern char GetSNSectorInfoBeforeNandInit(char * pbuf);\r
+extern char GetVendor0InfoBeforeNandInit(char * pbuf);\r
+\r
+static struct device_id_name tp_id_name[TP_ID_NUMS] = {\r
+ {DEVICE_TYPE_TP, TP_ID_NULL, "tp", "no_tp", "no", "no_tp", ((DEVICE_TYPE_TP<<8)+TP_ID_NULL)},\r
+ {DEVICE_TYPE_TP, TP_ID_GT813, "tp", "Goodix-TS", "Goodix-TS", "gt813", ((DEVICE_TYPE_TP<<8)+TP_ID_GT813)},\r
+ {DEVICE_TYPE_TP, TP_ID_EKTF2K, "tp", "elan-ktf2k", "elan-ktf2k", "elan-ktf2k", ((DEVICE_TYPE_TP<<8)+TP_ID_EKTF2K)},\r
+ \r
+};\r
+\r
+\r
+static struct device_id_name lcd_id_name[LCD_ID_NUMS] = {\r
+ {DEVICE_TYPE_LCD, LCD_ID_NULL, "lcd", "no_lcd", "no", "no_lcd", ((DEVICE_TYPE_LCD<<8)+LCD_ID_NULL)},\r
+ {DEVICE_TYPE_LCD, LCD_ID_IVO_M101_NWN8, "lcd", "IVO_M101_NWN8", "IVO_M101_NWN8", "101' 1280*800", ((DEVICE_TYPE_LCD<<8)+LCD_ID_IVO_M101_NWN8)}, \r
+ {DEVICE_TYPE_LCD, LCD_ID_EDID_I2C, "lcd", "lcd_edid_i2c", "edid", "auto lcd edid", ((DEVICE_TYPE_LCD<<8)+LCD_ID_EDID_I2C)},\r
+\r
+};\r
+\r
+\r
+static struct device_id_name key_id_name[KEY_ID_NUMS] = {\r
+ {DEVICE_TYPE_KEY, KEY_ID_NULL, "key", "no_key", "no", "no_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_NULL)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_SHUTTLE, "key", "shuttle_key", "shuttle", "shuttle_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_SHUTTLE)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_BITLAND, "key", "blueberry_kb", "bitland", "bitland_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_BITLAND)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_MALATA, "key", "malata_key", "malata", "malata_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_MALATA)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_CAPSENSE, "key", "cy8c20236", "cy8c20236", "cy8c20236_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_CAPSENSE)},\r
+\r
+ // type id type_name driver_name dev_name description device_id \r
+ {DEVICE_TYPE_KEY, KEY_ID_ENGLISH_US, "key", "blueberry_kb", "english_us", "english_us_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_ENGLISH_US)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_ENGLISH_UK, "key", "blueberry_kb", "english_uk", "english_uk_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_ENGLISH_UK)},\r
+\r
+ {DEVICE_TYPE_KEY, KEY_ID_TURKISH, "key", "blueberry_kb", "turkish", "turkish_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_TURKISH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_SLOVENIAN, "key", "blueberry_kb", "slovenian", "slovenian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_SLOVENIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_RUSSIAN, "key", "blueberry_kb", "russian", "russian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_RUSSIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_CZECH, "key", "blueberry_kb", "czech", "czech_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_CZECH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_HUNGARIAN, "key", "blueberry_kb", "hungarian", "hungarian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_HUNGARIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_HINDI, "key", "blueberry_kb", "hindi", "hindi_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_HINDI)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_THAI, "key", "blueberry_kb", "thai", "thai_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_THAI)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_PORTUGUESE, "key", "blueberry_kb", "portuguese", "portuguese_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_PORTUGUESE)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_ARABIC, "key", "blueberry_kb", "arabic", "arabic_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_ARABIC)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_GREEK, "key", "blueberry_kb", "greek", "greek_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_GREEK)},\r
+ //Nordics \r
+ {DEVICE_TYPE_KEY, KEY_ID_SWEDISH, "key", "blueberry_kb", "swedish", "swedish_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_SWEDISH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_NORWEGIAN, "key", "blueberry_kb", "norwegian", "norwegian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_NORWEGIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_FINNISH, "key", "blueberry_kb", "finnish", "finnish_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_FINNISH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_DANISH, "key", "blueberry_kb", "danish", "danish_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_DANISH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_ESTONIAN, "key", "blueberry_kb", "estonian", "estonian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_ESTONIAN)},\r
+\r
+ {DEVICE_TYPE_KEY, KEY_ID_FRENCH, "key", "blueberry_kb", "french", "french_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_FRENCH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_GERMAN, "key", "blueberry_kb", "german", "german_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_GERMAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_HEBREW, "key", "blueberry_kb", "hebrew", "hebrew_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_HEBREW)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_ITALIAN, "key", "blueberry_kb", "italian", "italian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_ITALIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_SPANISH, "key", "blueberry_kb", "spanish", "spanish_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_SPANISH)},\r
+\r
+ {DEVICE_TYPE_KEY, KEY_ID_SWISS, "key", "blueberry_kb", "swiss", "swiss_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_SWISS)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_DUTCH, "key", "blueberry_kb", "dutch", "dutch_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_DUTCH)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_BELGIAN, "key", "blueberry_kb", "belgian", "belgian_key", ((DEVICE_TYPE_KEY<<8)+KEY_ID_BELGIAN)},\r
+ {DEVICE_TYPE_KEY, KEY_ID_NORDIC, "key", "blueberry_kb", "nordic", "nordic_kb", ((DEVICE_TYPE_KEY<<8)+KEY_ID_NORDIC)},\r
+\r
+\r
+};\r
+\r
+\r
+static struct device_id_name codec_id_name[CODEC_ID_NUMS] = { \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_NULL, "codec", "no_codec", "no", "no_codec", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_NULL)}, \r
+ //to add\r
+ {DEVICE_TYPE_CODEC, CODEC_ID_WM8994, "codec", "wm8994", "wm8994", "wm8994", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_WM8994)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_WM8900, "codec", "wm8900", "wm8900", "wm8900", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_WM8900)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_WM8988, "codec", "wm8988", "wm8988", "wm8988", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_WM8988)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5616, "codec", "rt5616", "rt5616", "rt5616", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5616)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5621, "codec", "rt5621", "rt5621", "rt5621", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5621)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5623, "codec", "rt5623", "rt5623", "rt5623", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5623)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT3224, "codec", "rt3224", "rt3224", "rt3224", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT3224)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5625, "codec", "rt5625", "rt5625", "rt5625", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5625)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5631, "codec", "rt5631", "rt5631", "rt5631", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5631)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5639, "codec", "rt5639", "rt5639", "rt5639", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5639)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5640, "codec", "rt5640", "rt5640", "rt5640", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5640)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT5642, "codec", "rt5642", "rt5642", "rt5642", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT5642)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RT3261, "codec", "rt3261", "rt3261", "rt3261", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RT3261)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_AIC3262, "codec", "aic3262", "aic3262", "aic3262", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_AIC3262)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RK610, "codec", "rk610_i2c_codec", "rk610", "rk610", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RK610)}, \r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RK616, "codec", "rk616", "rk616", "rk616", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RK616)},\r
+ {DEVICE_TYPE_CODEC, CODEC_ID_RK1000, "codec", "rk1000", "rk1000", "rk1000", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_RK1000)},\r
+ {DEVICE_TYPE_CODEC, CODEC_ID_CS42L52, "codec", "cs42l52", "cs42l52", "cs42l52", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_CS42L52)},\r
+ {DEVICE_TYPE_CODEC, CODEC_ID_ES8323, "codec", "es8323", "es8323", "es8323", ((DEVICE_TYPE_CODEC<<8)+CODEC_ID_ES8323)},\r
+ \r
+};\r
+\r
+\r
+static struct device_id_name wifi_id_name[WIFI_ID_NUMS] = {\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_NULL, "wifi", "no_wifi", "no", "no_wifi", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_NULL)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_BCM, "wifi", "bcmdhd_wlan", "bcm", "WIFI_MODULE_BCM product", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_BCM)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_BCM4319, "wifi", "bcmdhd_wlan", "bcm4319", "WIFI_MODULE_BCM4319", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_BCM4319)}, \r
+ {DEVICE_TYPE_WIFI, WIFI_ID_BCM4330, "wifi", "bcmdhd_wlan", "bcm4330", "WIFI_MODULE_BCM4330", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_BCM4330)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RK903_26M, "wifi", "bcmdhd_wlan", "rk903_26m", "WIFI_MODULE_RK903_26M", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RK903_26M)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RK903_37M, "wifi", "bcmdhd_wlan", "rk903_37m", "WIFI_MODULE_RK903_37M", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RK903_37M)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_BCM4329, "wifi", "bcmdhd_wlan", "bcm4329", "WIFI_MODULE_BCM4329", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_BCM4329)}, \r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RK901, "wifi", "bcmdhd_wlan", "rk901", "WIFI_MODULE_RK901", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RK901)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_AP6181, "wifi", "ap6181", "ap6181", "WIFI_MODULE_AP6181", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_AP6181)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_AP6210, "wifi", "ap6210", "ap6210", "WIFI_MODULE_AP6210", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_AP6210)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_AP6330, "wifi", "ap6330", "ap6330", "WIFI_MODULE_AP6330", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_AP6330)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_AP6476, "wifi", "ap6476", "ap6476", "WIFI_MODULE_AP6476", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_AP6476)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_AP6493, "wifi", "ap6493", "ap6493", "WIFI_MODULE_AP6493", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_AP6493)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_GB86302I, "wifi", "gb86302i", "gb86302i", "WIFI_MODULE_GB86302I", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_GB86302I)},\r
+\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RTL8192CU, "wifi", "rtl8192cu_usb", "rtl8192cu_usb", "WIFI_MODULE_RTL8192CU_USB", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RTL8192CU)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RTL8188EU, "wifi", "rt8188eu_usb", "rt8188eu_usb", "WIFI_MODULE_RTL8188EU_USB", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RTL8188EU)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RTL8723AU, "wifi", "rtl8723au_usb", "rtl8723au_usb", "WIFI_MODULE_RTL8723AU_USB", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RTL8723AU)},\r
+\r
+ \r
+ {DEVICE_TYPE_WIFI, WIFI_ID_COMBO, "wifi", "combo-wifi", "combo-wifi", "WIFI_MODULE_MT product", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_COMBO)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_MT5931, "wifi", "combo-wifi", "mt5931", "WIFI_MODULE_MT5931", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_MT5931)},\r
+ {DEVICE_TYPE_WIFI, WIFI_ID_RT5370, "wifi", "rt5370_usb", "rt5370", "WIFI_MODULE_RT5370_USB", ((DEVICE_TYPE_WIFI<<8)+WIFI_ID_RT5370)},\r
+\r
+};\r
+\r
+\r
+static struct device_id_name bt_id_name[BT_ID_NUMS] = {\r
+ {DEVICE_TYPE_BT, BT_ID_NULL, "bt", "no_bluetooth", "no", "no_bluetooth", ((DEVICE_TYPE_BT<<8)+BT_ID_NULL)},\r
+ {DEVICE_TYPE_BT, BT_ID_NH660, "bt", "nh660", "nh660", "BT_MODULE_NH660", ((DEVICE_TYPE_BT<<8)+BT_ID_NH660)}, \r
+ {DEVICE_TYPE_BT, BT_ID_BCM4330, "bt", "rfkill_rk", "bcm4330", "BT_MODULE_BCM4330", ((DEVICE_TYPE_BT<<8)+BT_ID_BCM4330)},\r
+ {DEVICE_TYPE_BT, BT_ID_RK903_26M, "bt", "rfkill_rk", "rk903_26m", "BT_MODULE_RK903_26M", ((DEVICE_TYPE_BT<<8)+BT_ID_RK903_26M)},\r
+ {DEVICE_TYPE_BT, BT_ID_RK903, "bt", "rfkill_rk", "rk903", "BT_MODULE_RK903_37M", ((DEVICE_TYPE_BT<<8)+BT_ID_RK903)},\r
+ {DEVICE_TYPE_BT, BT_ID_BCM4329, "bt", "rfkill_rk", "bcm4329", "BT_MODULE_BCM4329", ((DEVICE_TYPE_BT<<8)+BT_ID_BCM4329)},\r
+ {DEVICE_TYPE_BT, BT_ID_MV8787, "bt", "rfkill_rk", "mv8787", "BT_MODULE_MV8787", ((DEVICE_TYPE_BT<<8)+BT_ID_MV8787)},\r
+ {DEVICE_TYPE_BT, BT_ID_AP6210, "bt", "rfkill_rk", "ap6210", "BT_MODULE_AP6210", ((DEVICE_TYPE_BT<<8)+BT_ID_AP6210)},\r
+ {DEVICE_TYPE_BT, BT_ID_AP6330, "bt", "rfkill_rk", "ap6330", "BT_MODULE_AP6330", ((DEVICE_TYPE_BT<<8)+BT_ID_AP6330)},\r
+ {DEVICE_TYPE_BT, BT_ID_AP6476, "bt", "rfkill_rk", "ap6476", "BT_MODULE_AP6476", ((DEVICE_TYPE_BT<<8)+BT_ID_AP6476)},\r
+ {DEVICE_TYPE_BT, BT_ID_AP6493, "bt", "rfkill_rk", "ap6493", "BT_MODULE_AP6493", ((DEVICE_TYPE_BT<<8)+BT_ID_AP6493)},\r
+ {DEVICE_TYPE_BT, BT_ID_RFKILL, "bt", "rfkill_rk", "bcm", "bcm product", ((DEVICE_TYPE_BT<<8)+BT_ID_RFKILL)},\r
+ {DEVICE_TYPE_BT, BT_ID_RTL8723, "bt", "rfkill_rk", "rtl8723", "BT_MODULE_RTL8723", ((DEVICE_TYPE_BT<<8)+BT_ID_RTL8723)},\r
+ {DEVICE_TYPE_BT, BT_ID_MT6622, "bt", "mt6622", "mt6622", "BT_MODULE_MT6622", ((DEVICE_TYPE_BT<<8)+BT_ID_MT6622)},\r
+ \r
+};\r
+ \r
+static struct device_id_name gps_id_name[GPS_ID_NUMS] = {\r
+ {DEVICE_TYPE_GPS, GPS_ID_NULL, "gps", "no_gps", "no", "no_gps", ((DEVICE_TYPE_GPS<<8)+GPS_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_GPS, GPS_ID_RK_HV5820, "gps", "gps_hv5820b", "hv5820b", "gps rk2928", ((DEVICE_TYPE_GPS<<8)+GPS_ID_RK_HV5820)},\r
+ {DEVICE_TYPE_GPS, GPS_ID_BCM4751, "gps", "bcm4751", "bcm4751", "gps bcm4751", ((DEVICE_TYPE_GPS<<8)+GPS_ID_BCM4751)},\r
+ {DEVICE_TYPE_GPS, GPS_ID_GNS7560, "gps", "gns7560", "gns7560", "gps gns7560", ((DEVICE_TYPE_GPS<<8)+GPS_ID_GNS7560)},\r
+ {DEVICE_TYPE_GPS, GPS_ID_MT3326, "gps", "mt3326", "mt3326", "gps mt3326", ((DEVICE_TYPE_GPS<<8)+GPS_ID_MT3326)},\r
+ \r
+};\r
+\r
+static struct device_id_name fm_id_name[FM_ID_NUMS] = {\r
+ {DEVICE_TYPE_FM, FM_ID_NULL, "fm", "no_fm", "no", "no_fm", ((DEVICE_TYPE_FM<<8)+FM_ID_NULL)}, \r
+ \r
+ //to add\r
+};\r
+\r
+\r
+static struct device_id_name modem_id_name[MODEM_ID_NUMS] = {\r
+ {DEVICE_TYPE_MODEM, MODEM_ID_NULL, "modem", "no_modem", "no", "no_modem", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_MODEM, MODEM_ID_MT6229, "modem", "bp-auto", "mt6229", "USI MT6229 WCDMA", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_MT6229)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_MU509, "modem", "bp-auto", "mu509", "huawei MU509 WCDMA", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_MU509)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_MI700, "modem", "bp-auto", "mi700", "thinkwill MI700 WCDMA", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_MI700)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_MW100, "modem", "bp-auto", "mw100", "thinkwill MW100 WCDMA", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_MW100)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_TD8801, "modem", "bp-auto", "td8801", "spreadtrum SC8803 TD-SCDMA", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_TD8801)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_SC6610, "modem", "bp-auto", "sc6610", "spreadtrum SC6610 GSM", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_SC6610)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_M50, "modem", "bp-auto", "m50", "spreadtrum RDA GSM", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_M50)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_MT6250, "modem", "bp-auto", "mt6250", "ZINN M50 EDGE", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_MT6250)}, \r
+ {DEVICE_TYPE_MODEM, MODEM_ID_C66A, "modem", "bp-auto", "c66a", "zhongben w200 gsm", ((DEVICE_TYPE_MODEM<<8)+MODEM_ID_C66A)},\r
+ \r
+};\r
+ \r
+static struct device_id_name ddr_id_name[DDR_ID_NUMS] = {\r
+ {DEVICE_TYPE_DDR, DDR_ID_NULL, "ddr", "no_ddr", "no", "no_ddr", ((DEVICE_TYPE_DDR<<8)+DDR_ID_NULL)},\r
+ \r
+ //to add\r
+};\r
+\r
+static struct device_id_name flash_id_name[FLASH_ID_NUMS] = {\r
+ {DEVICE_TYPE_FLASH, FLASH_ID_NULL, "flash", "no_flash", "no", "no_flash", ((DEVICE_TYPE_FLASH<<8)+FLASH_ID_NULL)}, \r
+ \r
+ //to add\r
+};\r
+\r
+\r
+static struct device_id_name hdmi_id_name[HDMI_ID_NUMS] = {\r
+ {DEVICE_TYPE_HDMI, HDMI_ID_NULL, "hdmi", "no_hdmi", "no", "no_hdmi", ((DEVICE_TYPE_HDMI<<8)+HDMI_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_HDMI, HDMI_ID_RK30, "hdmi", "rk_hdmi", "rk", "rk3066 hdmi", ((DEVICE_TYPE_HDMI<<8)+HDMI_ID_RK30)},\r
+ {DEVICE_TYPE_HDMI, HDMI_ID_CAT66121, "hdmi", "cat66121_hdmi", "cat66121", "hdmi cat66121", ((DEVICE_TYPE_HDMI<<8)+HDMI_ID_CAT66121)},\r
+ {DEVICE_TYPE_HDMI, HDMI_ID_RK610, "hdmi", "rk610_hdmi", "rk610", "hdmi rk610", ((DEVICE_TYPE_HDMI<<8)+HDMI_ID_RK610)},\r
+ \r
+};\r
+\r
+\r
+static struct device_id_name battery_id_name[BATTERY_ID_NUMS] = {\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_NULL, "battery", "no_battery", "no", "no_battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_3300MAH, "battery", "rk30-battery", "3300mah", "3300mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_3300MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_3600MAH, "battery", "rk30-battery", "3600mah", "3600mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_3600MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_4700MAH, "battery", "rk30-battery", "4700mah", "4700mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_4700MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_7000MAH, "battery", "rk30-battery", "7000mah", "7000mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_7000MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_7700MAH, "battery", "rk30-battery", "7700mah", "7700mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_7700MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_9000MAH, "battery", "rk30-battery", "9000mah", "9000mah battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_9000MAH)},\r
+ {DEVICE_TYPE_BATTERY, BATTERY_ID_BLUEBERRY, "battery", "blueberry_bat", "blueberry", "blueberry battery", ((DEVICE_TYPE_BATTERY<<8)+BATTERY_ID_BLUEBERRY)},\r
+ \r
+};\r
+\r
+\r
+\r
+static struct device_id_name charge_id_name[CHARGE_ID_NUMS] = {\r
+ {DEVICE_TYPE_CHARGE, CHARGE_ID_NULL, "charge", "no_charge", "no", "no_charge", ((DEVICE_TYPE_CHARGE<<8)+CHARGE_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_CHARGE, CHARGE_ID_CW2015, "charge", "cw2015", "cw2015", "charge cw2015", ((DEVICE_TYPE_CHARGE<<8)+CHARGE_ID_CW2015)}, \r
+ {DEVICE_TYPE_CHARGE, CHARGE_ID_BQ24193, "charge", "bq24193", "bq24193", "charge BQ24193", ((DEVICE_TYPE_CHARGE<<8)+CHARGE_ID_BQ24193)}, \r
+ {DEVICE_TYPE_CHARGE, CHARGE_ID_BQ27541, "charge", "bq27541", "bq27541", "charge BQ27541", ((DEVICE_TYPE_CHARGE<<8)+CHARGE_ID_BQ27541)}, \r
+ {DEVICE_TYPE_CHARGE, CHARGE_ID_OZ8806, "charge", "oz8806", "oz8806", "charge OZ8806", ((DEVICE_TYPE_CHARGE<<8)+CHARGE_ID_OZ8806)}, \r
+ \r
+};\r
+\r
+ \r
+static struct device_id_name backlight_id_name[BACKLIGHT_ID_NUMS] = {\r
+ {DEVICE_TYPE_BACKLIGHT, BACKLIGHT_ID_NULL, "backlight", "no_backlight", "no", "no_backlight", ((DEVICE_TYPE_BACKLIGHT<<8)+BACKLIGHT_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_BACKLIGHT, BACKLIGHT_ID_RK29, "backlight", "rk29_backlight", "rk29_backlight", "rk29_backlight", ((DEVICE_TYPE_BACKLIGHT<<8)+BACKLIGHT_ID_RK29)},\r
+ {DEVICE_TYPE_BACKLIGHT, BACKLIGHT_ID_WM831X, "backlight", "wm831x", "wm831x", "wm831x_backlight", ((DEVICE_TYPE_BACKLIGHT<<8)+BACKLIGHT_ID_WM831X)},\r
+ \r
+};\r
+\r
+static struct device_id_name headset_id_name[HEADSET_ID_NUMS] = {\r
+ {DEVICE_TYPE_HEADSET, HEADSET_ID_NULL, "headset", "no_headset", "no", "no_headset", ((DEVICE_TYPE_HEADSET<<8)+HEADSET_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_HEADSET, HEADSET_ID_RK29, "headset", "rk_headsetdet", "rk_headsetdet", "rk29 headset", ((DEVICE_TYPE_HEADSET<<8)+HEADSET_ID_RK29)},\r
+ \r
+};\r
+\r
+\r
+\r
+static struct device_id_name micphone_id_name[MICPHONE_ID_NUMS] = {\r
+ {DEVICE_TYPE_MICPHONE, MICPHONE_ID_NULL, "micphone", "no_micphone", "no", "no_micphone", ((DEVICE_TYPE_MICPHONE<<8)+MICPHONE_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_MICPHONE, MICPHONE_ID_ANALOGIC, "micphone", "analogic", "analogic", "micphone analogic", ((DEVICE_TYPE_MICPHONE<<8)+MICPHONE_ID_ANALOGIC)}, \r
+ {DEVICE_TYPE_MICPHONE, MICPHONE_ID_DIGITAL, "micphone", "digital", "digital", "micphone digital", ((DEVICE_TYPE_MICPHONE<<8)+MICPHONE_ID_DIGITAL)}, \r
+};\r
+\r
+\r
+static struct device_id_name speaker_id_name[SPEAKER_ID_NUMS] = {\r
+ {DEVICE_TYPE_SPEAKER, SPEAKER_ID_NULL, "speaker", "no_speaker", "no", "no_speaker", ((DEVICE_TYPE_SPEAKER<<8)+SPEAKER_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_SPEAKER, SPEAKER_ID_0W8, "speaker", "speaker_08w", "speaker_08w", "speaker 0.8W", ((DEVICE_TYPE_SPEAKER<<8)+SPEAKER_ID_0W8)},\r
+ {DEVICE_TYPE_SPEAKER, SPEAKER_ID_1W0, "speaker", "speaker_10w", "speaker_10w", "speaker 1.0W", ((DEVICE_TYPE_SPEAKER<<8)+SPEAKER_ID_1W0)},\r
+ {DEVICE_TYPE_SPEAKER, SPEAKER_ID_1W5, "speaker", "speaker_15w", "speaker_15w", "speaker 1.5W", ((DEVICE_TYPE_SPEAKER<<8)+SPEAKER_ID_1W5)},\r
+ \r
+};\r
+\r
+static struct device_id_name vibrator_id_name[VIBRATOR_ID_NUMS] = {\r
+ {DEVICE_TYPE_VIBRATOR, VIBRATOR_ID_NULL, "vibrator", "no_vibrator", "no", "no_vibrator", ((DEVICE_TYPE_VIBRATOR<<8)+VIBRATOR_ID_NULL)}, \r
+ \r
+ //to add \r
+ {DEVICE_TYPE_VIBRATOR, VIBRATOR_ID_RK29, "vibrator", "timed-gpio", "timed-gpio", "vibrator gpio", ((DEVICE_TYPE_VIBRATOR<<8)+VIBRATOR_ID_RK29)}, \r
+};\r
+\r
+static struct device_id_name tv_id_name[TV_ID_NUMS] = {\r
+ {DEVICE_TYPE_TV, TV_ID_NULL, "tv", "no_tv", "no", "no_tv", ((DEVICE_TYPE_TV<<8)+TV_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_TV, TV_ID_RK610, "tv", "rk610_tvout", "rk610_tvout", "tv rk610", ((DEVICE_TYPE_TV<<8)+TV_ID_RK610)},\r
+};\r
+\r
+\r
+static struct device_id_name echip_id_name[ECHIP_ID_NUMS] = {\r
+ {DEVICE_TYPE_ECHIP, ECHIP_ID_NULL, "echip", "no_ec", "no", "no_ec", ((DEVICE_TYPE_ECHIP<<8)+ECHIP_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_ECHIP, ECHIP_ID_IT8561, "echip", "ec_dev_i2c", "ec_dev_i2c", "ec it8561", ((DEVICE_TYPE_ECHIP<<8)+ECHIP_ID_IT8561)},\r
+ {DEVICE_TYPE_ECHIP, ECHIP_ID_ITE, "echip", "ite", "ite", "ec ite", ((DEVICE_TYPE_ECHIP<<8)+ECHIP_ID_ITE)},\r
+};\r
+\r
+\r
+static struct device_id_name hub_id_name[HUB_ID_NUMS] = {\r
+ {DEVICE_TYPE_HUB, HUB_ID_NULL, "hub", "no_hub", "no", "no_hub", ((DEVICE_TYPE_HUB<<8)+HUB_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_HUB, HUB_ID_USB4604, "hub", "usb4604", "usb4604", "3 ports", ((DEVICE_TYPE_HUB<<8)+HUB_ID_USB4604)},\r
+};\r
+\r
+static struct device_id_name tpad_id_name[TPAD_ID_NUMS] = {\r
+ {DEVICE_TYPE_TPAD, TPAD_ID_NULL, "tpad", "no_tpad", "no", "no_tpad", ((DEVICE_TYPE_TPAD<<8)+TPAD_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_TPAD, TPAD_ID_ELAN, "tpad", "blueberry_tp", "elan", "elan", ((DEVICE_TYPE_TPAD<<8)+TPAD_ID_ELAN)},\r
+ {DEVICE_TYPE_TPAD, TPAD_ID_SYNS, "tpad", "a10_tp_syn", "syns", "syns", ((DEVICE_TYPE_TPAD<<8)+TPAD_ID_SYNS)},\r
+};\r
+\r
+ \r
+\r
+static struct device_id_name pmic_id_name[PMIC_ID_NUMS] = {\r
+ {DEVICE_TYPE_PMIC, PMIC_ID_NULL, "pmic", "no_pmic", "no", "no_pmic", ((DEVICE_TYPE_PMIC<<8)+PMIC_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_PMIC, PMIC_ID_WM831X, "pmic", "wm831x", "wm831x", "wm831x", ((DEVICE_TYPE_PMIC<<8)+PMIC_ID_WM831X)},\r
+ {DEVICE_TYPE_PMIC, PMIC_ID_WM8326, "pmic", "wm8326", "wm8326", "wm8326", ((DEVICE_TYPE_PMIC<<8)+PMIC_ID_WM8326)},\r
+ {DEVICE_TYPE_PMIC, PMIC_ID_TPS65910, "pmic", "tps65910", "tps65910", "tps65910", ((DEVICE_TYPE_PMIC<<8)+PMIC_ID_TPS65910)},\r
+ {DEVICE_TYPE_PMIC, PMIC_ID_ACT8846, "pmic", "act8846", "act8846", "act8846", ((DEVICE_TYPE_PMIC<<8)+PMIC_ID_ACT8846)},\r
+ \r
+};\r
+\r
+static struct device_id_name regulator_id_name[REGULATOR_ID_NUMS] = {\r
+ {DEVICE_TYPE_REGULATOR, REGULATOR_ID_NULL, "regulator", "no_regulator", "no", "no_regulator", ((DEVICE_TYPE_REGULATOR<<8)+REGULATOR_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_REGULATOR, REGULATOR_ID_PWM3, "regulator", "pwm3", "pwm3", "regulator pwm3", ((DEVICE_TYPE_REGULATOR<<8)+REGULATOR_ID_PWM3)},\r
+ \r
+};\r
+\r
+\r
+static struct device_id_name rtc_id_name[RTC_ID_NUMS] = {\r
+ {DEVICE_TYPE_RTC, RTC_ID_NULL, "rtc", "no_rtc", "no", "no_rtc", ((DEVICE_TYPE_RTC<<8)+RTC_ID_NULL)}, \r
+ \r
+ //to add\r
+ {DEVICE_TYPE_RTC, RTC_ID_HYM8563, "rtc", "rtc_hym8563", "hym8563", "hym8563", ((DEVICE_TYPE_RTC<<8)+RTC_ID_HYM8563)}, \r
+ {DEVICE_TYPE_RTC, RTC_ID_PCF8563, "rtc", "rtc-pcf8563", "pcf8563", "pcf8563", ((DEVICE_TYPE_RTC<<8)+RTC_ID_PCF8563)}, \r
+ {DEVICE_TYPE_RTC, RTC_ID_TPS65910, "rtc", "rtc_tps65910", "tps65910", "tps65910", ((DEVICE_TYPE_RTC<<8)+RTC_ID_TPS65910)}, \r
+ {DEVICE_TYPE_RTC, RTC_ID_WM8326, "rtc", "rtc_wm8326", "wm8326", "wm8326", ((DEVICE_TYPE_RTC<<8)+RTC_ID_WM8326)}, \r
+ {DEVICE_TYPE_RTC, RTC_ID_RK, "rtc", "rk_rtc", "rk", "rk_rtc", ((DEVICE_TYPE_RTC<<8)+RTC_ID_RK)}, \r
+ \r
+};\r
+\r
+static struct device_id_name camera_front_id_name[CAMERA_FRONT_ID_NUMS] = {\r
+ {DEVICE_TYPE_CAMERA_FRONT, CAMERA_FRONT_ID_NULL, "camera_front", "no_front", "no", "no_camera_front", ((DEVICE_TYPE_CAMERA_FRONT<<8)\r
+\r
++CAMERA_FRONT_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name camera_back_id_name[CAMERA_BACK_ID_NUMS] = {\r
+ {DEVICE_TYPE_CAMERA_BACK, CAMERA_BACK_ID_NULL, "camera_back", "no_back", "no", "no_camera_back", ((DEVICE_TYPE_CAMERA_BACK<<8)+CAMERA_BACK_ID_NULL)}, \r
+ \r
+ //to add\r
+};\r
+ \r
+static struct device_id_name sensor_angle_id_name[ANGLE_ID_NUMS] = {\r
+ {DEVICE_TYPE_ANGLE, ANGLE_ID_NULL, "angle", "no_angle", "no", "no_angle_sensor", ((DEVICE_TYPE_ANGLE<<8)+ANGLE_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_accel_id_name[ACCEL_ID_NUMS] = {\r
+ {DEVICE_TYPE_ACCEL, ACCEL_ID_NULL, "accel", "no_accel", "no", "no_accel_sensor", ((DEVICE_TYPE_ACCEL<<8)+ACCEL_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_compass_id_name[COMPASS_ID_NUMS] = {\r
+ {DEVICE_TYPE_COMPASS, COMPASS_ID_NULL, "compass", "no_compass", "no", "no_compass_sensor", ((DEVICE_TYPE_COMPASS<<8)+COMPASS_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_gyroscope_id_name[GYRO_ID_NUMS] = {\r
+ {DEVICE_TYPE_GYRO, GYRO_ID_NULL, "gyro", "no_gyro", "no", "no_gyro_sensor", ((DEVICE_TYPE_GYRO<<8)+GYRO_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_light_id_name[LIGHT_ID_NUMS] = {\r
+ {DEVICE_TYPE_LIGHT, LIGHT_ID_NULL, "light", "no_light", "no", "no_light_sensor", ((DEVICE_TYPE_LIGHT<<8)+LIGHT_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_proximity_id_name[PROXIMITY_ID_NUMS] = {\r
+ {DEVICE_TYPE_PROXIMITY, PROXIMITY_ID_NULL, "proximity", "no_proximity", "no", "no_proximity_sensor", ((DEVICE_TYPE_PROXIMITY<<8)+PROXIMITY_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct device_id_name sensor_temperature_id_name[TEMPERATURE_ID_NUMS] = {\r
+ {DEVICE_TYPE_TEMPERATURE, TEMPERATURE_ID_NULL, "temperature", "no_temp", "no", "no_temperature_sensor", ((DEVICE_TYPE_TEMPERATURE<<8)\r
+\r
++TEMPERATURE_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+ \r
+static struct device_id_name sensor_pressure_id_name[PRESSURE_ID_NUMS] = {\r
+ {DEVICE_TYPE_PRESSURE, PRESSURE_ID_NULL, "pressure", "no_pressure", "no", "no_pressure_sensor", ((DEVICE_TYPE_PRESSURE<<8)+PRESSURE_ID_NULL)}, \r
+ \r
+ //to add\r
+ \r
+};\r
+\r
+static struct area_id_name area_area_id_name[AREA_ID_NUMS] = {\r
+ {DEVICE_TYPE_AREA, AREA_ID_NULL, "no", "no", "no", "no", "no", USER_DEFINE_NULL}, \r
+ {DEVICE_TYPE_AREA,AREA_ID_ALBANIA,"Albania",LOCALE_LANGUAGE_EL,LOCALE_REGION_AL,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ALGERIA,"Algeria",LOCALE_LANGUAGE_AR,LOCALE_REGION_DZ,COUNTRY_GEO_NULL,TIME_ZONE_WINDHOEK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ANGOLA,"Angola",LOCALE_LANGUAGE_PT,LOCALE_REGION_AO,COUNTRY_GEO_NULL,TIME_ZONE_WINDHOEK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ARGENTINA,"Argentina",LOCALE_LANGUAGE_ES,LOCALE_REGION_AR,COUNTRY_GEO_NULL,TIME_ZONE_BUENOS_AIRES,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_AUSTRALIA,"Australia",LOCALE_LANGUAGE_EN,LOCALE_REGION_AU,COUNTRY_GEO_NULL,TIME_ZONE_PERTH,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_AUSTRIA,"Austria",LOCALE_LANGUAGE_DE,LOCALE_REGION_AT,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_AZERBAIJAN,"Azerbaijan",LOCALE_LANGUAGE_RU,LOCALE_REGION_AZ,COUNTRY_GEO_NULL,TIME_ZONE_BAKU,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BAHRAIN,"Bahrain",LOCALE_LANGUAGE_AR,LOCALE_REGION_BH,COUNTRY_GEO_NULL,TIME_ZONE_KUWAIT,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BANGLADESH,"Bangladesh",LOCALE_LANGUAGE_EN,LOCALE_REGION_BD,COUNTRY_GEO_NULL,TIME_ZONE_ASTANA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BARBADOS,"Barbados",LOCALE_LANGUAGE_EN,LOCALE_REGION_BB,COUNTRY_GEO_NULL,TIME_ZONE_ATLANTIC_TIME_BARBADOS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BELARUS,"Belarus",LOCALE_LANGUAGE_BE,LOCALE_REGION_BY,COUNTRY_GEO_NULL,TIME_ZONE_MINSK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BELGIUM,"Belgium",LOCALE_LANGUAGE_FR,LOCALE_REGION_BE,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BOLIVIA,"Bolivia",LOCALE_LANGUAGE_ES,LOCALE_REGION_BO,COUNTRY_GEO_NULL,TIME_ZONE_SANTIAGO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BOSNIA_AND_HERZEGOVINA,"Bosnia and Herzegovina",LOCALE_LANGUAGE_SR,LOCALE_REGION_BA,COUNTRY_GEO_NULL,TIME_ZONE_SARAJEVO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BOTSWANA,"Botswana",LOCALE_LANGUAGE_EN,LOCALE_REGION_BW,COUNTRY_GEO_NULL,TIME_ZONE_HARARE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BRAZIL,"Brazil",LOCALE_LANGUAGE_PT,LOCALE_REGION_BR,COUNTRY_GEO_NULL,TIME_ZONE_BRASILIA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BULGARIA,"Bulgaria",LOCALE_LANGUAGE_BG,LOCALE_REGION_BG,COUNTRY_GEO_NULL,TIME_ZONE_ATHENS_ISTANBUL,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CANADA,"Canada",LOCALE_LANGUAGE_EN,LOCALE_REGION_CA,COUNTRY_GEO_NULL,TIME_ZONE_NEWFOUNDLAND,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CHILE,"Chile",LOCALE_LANGUAGE_ES,LOCALE_REGION_CL,COUNTRY_GEO_NULL,TIME_ZONE_SANTIAGO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CHINA,"China",LOCALE_LANGUAGE_ZH,LOCALE_REGION_CN,COUNTRY_GEO_NULL,TIME_ZONE_BEIJING,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_COLOMBIA,"Colombia",LOCALE_LANGUAGE_ES,LOCALE_REGION_CO,COUNTRY_GEO_NULL,TIME_ZONE_BOGOTA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_COTE_D_IVOIRE,"Cote d'Ivoire",LOCALE_LANGUAGE_FR,LOCALE_REGION_CI,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CROATIA,"Croatia",LOCALE_LANGUAGE_HR,LOCALE_REGION_HR,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CYPRUS,"Cyprus",LOCALE_LANGUAGE_EN,LOCALE_REGION_CY,COUNTRY_GEO_NULL,TIME_ZONE_BEIRUT_LEBANON,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CZECH_REPUBLIC,"Czech Republic",LOCALE_LANGUAGE_CS,LOCALE_REGION_CZ,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_DENMARK,"Denmark",LOCALE_LANGUAGE_DA,LOCALE_REGION_DK,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ECUADOR,"Ecuador",LOCALE_LANGUAGE_ES,LOCALE_REGION_EC,COUNTRY_GEO_NULL,TIME_ZONE_MEXICO_CITY,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_EGYPT,"Egypt",LOCALE_LANGUAGE_AR,LOCALE_REGION_EG,COUNTRY_GEO_NULL,TIME_ZONE_CAIRO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ESTONIA,"Estonia",LOCALE_LANGUAGE_ET,LOCALE_REGION_EE,COUNTRY_GEO_NULL,TIME_ZONE_HELSINKI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_FINLAND,"Finland",LOCALE_LANGUAGE_FI,LOCALE_REGION_FI,COUNTRY_GEO_NULL,TIME_ZONE_HELSINKI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_FRANCE_INC_GUADELOUPE,"France (inc Guadeloupe)",LOCALE_LANGUAGE_FR,LOCALE_REGION_FR,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_GEORGIA,"Georgia",LOCALE_LANGUAGE_RU,LOCALE_REGION_GE,COUNTRY_GEO_NULL,TIME_ZONE_TBILISI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_GERMANY,"Germany",LOCALE_LANGUAGE_DE,LOCALE_REGION_DE,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_GREECE,"Greece",LOCALE_LANGUAGE_EL,LOCALE_REGION_GR,COUNTRY_GEO_NULL,TIME_ZONE_ATHENS_ISTANBUL,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_HAITI,"Haiti",LOCALE_LANGUAGE_FR,LOCALE_REGION_HT,COUNTRY_GEO_NULL,TIME_ZONE_BOGOTA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_HONDURAS,"Honduras",LOCALE_LANGUAGE_ES,LOCALE_REGION_HN,COUNTRY_GEO_NULL,TIME_ZONE_CENTRAL_AMERICA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_HONG_KONG,"Hong Kong",LOCALE_LANGUAGE_ZH,LOCALE_REGION_HK,COUNTRY_GEO_NULL,TIME_ZONE_HONG_KONG,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_HUNGARY,"Hungary",LOCALE_LANGUAGE_HU,LOCALE_REGION_HU,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ICELAND,"Iceland",LOCALE_LANGUAGE_EN,LOCALE_REGION_IS,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_INDIA,"India en_US",LOCALE_LANGUAGE_EN,LOCALE_REGION_IN,COUNTRY_GEO_NULL,TIME_ZONE_KOLKATA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_INDONESIA,"Indonesia",LOCALE_LANGUAGE_IN,LOCALE_REGION_ID,COUNTRY_GEO_NULL,TIME_ZONE_HONG_KONG,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_IRELAND,"Ireland",LOCALE_LANGUAGE_EN,LOCALE_REGION_IE,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ISRAEL,"Israel iw",LOCALE_LANGUAGE_IW,LOCALE_REGION_IL,COUNTRY_GEO_NULL,TIME_ZONE_JERUSALEM,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ITALY,"Italy",LOCALE_LANGUAGE_IT,LOCALE_REGION_IT,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_JAMAICA,"Jamaica",LOCALE_LANGUAGE_EN,LOCALE_REGION_JM,COUNTRY_GEO_NULL,TIME_ZONE_EASTERN_TIME,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_JAPAN,"Japan",LOCALE_LANGUAGE_JA,LOCALE_REGION_JP,COUNTRY_GEO_NULL,TIME_ZONE_TOKYO_OSAKA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_JORDAN,"Jordan",LOCALE_LANGUAGE_AR,LOCALE_REGION_JO,COUNTRY_GEO_NULL,TIME_ZONE_AMMAN_JORDAN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_KAZAKHSTAN,"Kazakhstan",LOCALE_LANGUAGE_RU,LOCALE_REGION_KZ,COUNTRY_GEO_NULL,TIME_ZONE_MOSCOW,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_KENYA,"Kenya",LOCALE_LANGUAGE_SW,LOCALE_REGION_KE,COUNTRY_GEO_NULL,TIME_ZONE_NAIROBI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_KOREA_SOUTH,"Korea (South)",LOCALE_LANGUAGE_KO,LOCALE_REGION_KR,COUNTRY_GEO_NULL,TIME_ZONE_SEOUL,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_KUWAIT,"Kuwait",LOCALE_LANGUAGE_AR,LOCALE_REGION_KW,COUNTRY_GEO_NULL,TIME_ZONE_KUWAIT,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_LATVIA,"Latvia",LOCALE_LANGUAGE_LV,LOCALE_REGION_LV,COUNTRY_GEO_NULL,TIME_ZONE_MINSK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_LEBANON,"Lebanon",LOCALE_LANGUAGE_AR,LOCALE_REGION_LB,COUNTRY_GEO_NULL,TIME_ZONE_BEIRUT_LEBANON,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_LITHUANIA,"Lithuania",LOCALE_LANGUAGE_LT,LOCALE_REGION_LT,COUNTRY_GEO_NULL,TIME_ZONE_MINSK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_LUXEMBOURG,"Luxembourg",LOCALE_LANGUAGE_FR,LOCALE_REGION_LU,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_MACEDONIA,"Macedonia",LOCALE_LANGUAGE_EN,LOCALE_REGION_MK,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_MALAYSIA,"Malaysia",LOCALE_LANGUAGE_MS,LOCALE_REGION_MY,COUNTRY_GEO_NULL,TIME_ZONE_KUALA_LUMPUR,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_MEXICO,"Mexico",LOCALE_LANGUAGE_ES,LOCALE_REGION_MX,COUNTRY_GEO_NULL,TIME_ZONE_CHIHUAHUA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_MOLDOVA,"Moldova",LOCALE_LANGUAGE_RU,LOCALE_REGION_MD,COUNTRY_GEO_NULL,TIME_ZONE_ATHENS_ISTANBUL,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_MOROCCO,"Morocco",LOCALE_LANGUAGE_AR,LOCALE_REGION_MA,COUNTRY_GEO_NULL,TIME_ZONE_CASABLANCA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NEPAL,"Nepal",LOCALE_LANGUAGE_EN,LOCALE_REGION_NP,COUNTRY_GEO_NULL,TIME_ZONE_KATHMANDU,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NETHERLAND_ANTILLES,"Netherland Antilles",LOCALE_LANGUAGE_NL,LOCALE_REGION_AN,COUNTRY_GEO_NULL,TIME_ZONE_SANTIAGO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NETHERLANDS_INC_BONAIRE,"Netherlands (inc Bonn) nl",LOCALE_LANGUAGE_NL,LOCALE_REGION_NL,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NEW_ZEALAND,"New Zealand",LOCALE_LANGUAGE_EN,LOCALE_REGION_NZ,COUNTRY_GEO_NULL,TIME_ZONE_AUCKLAND,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NIGERIA,"Nigeria",LOCALE_LANGUAGE_EN,LOCALE_REGION_NG,COUNTRY_GEO_NULL,TIME_ZONE_WINDHOEK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NORWAY,"Norway",LOCALE_LANGUAGE_NO,LOCALE_REGION_NO,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_OMAN,"Oman",LOCALE_LANGUAGE_AR,LOCALE_REGION_OM,COUNTRY_GEO_NULL,TIME_ZONE_DUBAI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_PAKISTAN,"Pakistan",LOCALE_LANGUAGE_EN,LOCALE_REGION_PK,COUNTRY_GEO_NULL,TIME_ZONE_ISLAMABAD_KARACHI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_PARAGUAY,"Paraguay",LOCALE_LANGUAGE_ES,LOCALE_REGION_PY,COUNTRY_GEO_NULL,TIME_ZONE_SANTIAGO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_PERU,"Peru",LOCALE_LANGUAGE_ES,LOCALE_REGION_PE,COUNTRY_GEO_NULL,TIME_ZONE_EASTERN_TIME,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_PHILIPPINES,"Philippines",LOCALE_LANGUAGE_TL,LOCALE_REGION_PH,COUNTRY_GEO_NULL,TIME_ZONE_KUALA_LUMPUR,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_POLAND,"Poland",LOCALE_LANGUAGE_PL,LOCALE_REGION_PL,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_PORTUGAL,"Portugal",LOCALE_LANGUAGE_PT,LOCALE_REGION_PT,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_QATAR,"Qatar",LOCALE_LANGUAGE_AR,LOCALE_REGION_QA,COUNTRY_GEO_NULL,TIME_ZONE_MOSCOW,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ROMANIA,"Romania",LOCALE_LANGUAGE_RO,LOCALE_REGION_RO,COUNTRY_GEO_NULL,TIME_ZONE_HELSINKI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_RUSSIA,"Russia",LOCALE_LANGUAGE_RU,LOCALE_REGION_RU,COUNTRY_GEO_NULL,TIME_ZONE_VLADIVOSTOK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SAUDI_ARABIA,"Saudi Arabia",LOCALE_LANGUAGE_AR,LOCALE_REGION_SA,COUNTRY_GEO_NULL,TIME_ZONE_KUWAIT,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SERBIA,"Serbia",LOCALE_LANGUAGE_SR,LOCALE_REGION_CS,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SINGAPORE,"Singapore",LOCALE_LANGUAGE_EN,LOCALE_REGION_SG,COUNTRY_GEO_NULL,TIME_ZONE_HONG_KONG,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SLOVAKIA,"Slovakia",LOCALE_LANGUAGE_SK,LOCALE_REGION_SK,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SLOVENIA,"Slovenia",LOCALE_LANGUAGE_SL,LOCALE_REGION_SI,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SOUTH_AFRICA,"South Africa",LOCALE_LANGUAGE_EN,LOCALE_REGION_ZA,COUNTRY_GEO_NULL,TIME_ZONE_CAIRO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SPAIN,"Spain",LOCALE_LANGUAGE_ES,LOCALE_REGION_ES,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SRI_LANKA,"Sri Lanka",LOCALE_LANGUAGE_EN,LOCALE_REGION_LK,COUNTRY_GEO_NULL,TIME_ZONE_SRI_LANKA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SWEDEN,"Sweden",LOCALE_LANGUAGE_SV,LOCALE_REGION_SE,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_SWITZERLAND,"Switzerland",LOCALE_LANGUAGE_DE,LOCALE_REGION_CH,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_TAIWAN,"Taiwan",LOCALE_LANGUAGE_ZH,LOCALE_REGION_TW,COUNTRY_GEO_NULL,TIME_ZONE_TAIPEI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_THAILAND,"Thailand",LOCALE_LANGUAGE_TH,LOCALE_REGION_TH,COUNTRY_GEO_NULL,TIME_ZONE_BANGKOK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_TRINIDAD_TOBAGO,"Trinidad Tobago",LOCALE_LANGUAGE_EN,LOCALE_REGION_TT,COUNTRY_GEO_NULL,TIME_ZONE_MANAUS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_TUNISIA,"Tunisia",LOCALE_LANGUAGE_AR,LOCALE_REGION_TN,COUNTRY_GEO_NULL,TIME_ZONE_WINDHOEK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_TURKEY,"Turkey",LOCALE_LANGUAGE_TR,LOCALE_REGION_TR,COUNTRY_GEO_NULL,TIME_ZONE_JERUSALEM,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_TURKMENISTAN,"Turkmenistan",LOCALE_LANGUAGE_RU,LOCALE_REGION_TM,COUNTRY_GEO_NULL,TIME_ZONE_ISLAMABAD_KARACHI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UGANDA,"Uganda",LOCALE_LANGUAGE_EN,LOCALE_REGION_UG,COUNTRY_GEO_NULL,TIME_ZONE_TEHRAN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UKRAINE,"Ukraine",LOCALE_LANGUAGE_UK,LOCALE_REGION_UA,COUNTRY_GEO_NULL,TIME_ZONE_ATHENS_ISTANBUL,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UNITED_KINGDOM,"United Kingdom",LOCALE_LANGUAGE_EN,LOCALE_REGION_GB,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UNITED_STATES,"United States",LOCALE_LANGUAGE_EN,LOCALE_REGION_US,COUNTRY_GEO_NULL,TIME_ZONE_ARIZONA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_URUGUAY,"Uruguay",LOCALE_LANGUAGE_ES,LOCALE_REGION_UY,COUNTRY_GEO_NULL,TIME_ZONE_MONTEVIDEO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UZBEKISTAN,"Uzbekistan",LOCALE_LANGUAGE_RU,LOCALE_REGION_UZ,COUNTRY_GEO_NULL,TIME_ZONE_YEKATERINBURG,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_VENEZUELA,"Venezuela",LOCALE_LANGUAGE_ES,LOCALE_REGION_VE,COUNTRY_GEO_NULL,TIME_ZONE_VENEZUELA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_VIETNAM,"Vietnam",LOCALE_LANGUAGE_VI,LOCALE_REGION_VN,COUNTRY_GEO_NULL,TIME_ZONE_BANGKOK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NORDICS,"Nordics",LOCALE_LANGUAGE_EN,LOCALE_REGION_SE,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_BALTIC,"Baltic",LOCALE_LANGUAGE_EN,LOCALE_REGION_LT,COUNTRY_GEO_NULL,TIME_ZONE_MINSK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CZECH_SLOVAKIA,"Czech-Slovakia",LOCALE_LANGUAGE_EN,LOCALE_REGION_CZ,COUNTRY_GEO_NULL,TIME_ZONE_BRUSSELS,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_CROATIA_SLOVENIA,"Croatia-Slovenia",LOCALE_LANGUAGE_EN,LOCALE_REGION_HR,COUNTRY_GEO_NULL,TIME_ZONE_BELGRADE,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_LA_GROUP,"LA Group",LOCALE_LANGUAGE_ES,LOCALE_REGION_BO,COUNTRY_GEO_NULL,TIME_ZONE_SANTIAGO,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UNITED_ARAB_EMIRATES,"UAE ar",LOCALE_LANGUAGE_EN,LOCALE_REGION_BH,COUNTRY_GEO_NULL,TIME_ZONE_KUWAIT,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_EMAT_UK,"EMAT-UK",LOCALE_LANGUAGE_EN,LOCALE_REGION_KE,COUNTRY_GEO_NULL,TIME_ZONE_NAIROBI,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_EMAT_FR,"EMAT-FR",LOCALE_LANGUAGE_FR,LOCALE_REGION_CI,COUNTRY_GEO_NULL,TIME_ZONE_LONDON_DUBLIN,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_EMAT_PO,"EMAT-PO",LOCALE_LANGUAGE_PT,LOCALE_REGION_AO,COUNTRY_GEO_NULL,TIME_ZONE_WINDHOEK,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_INDIA_HI,"India hi",LOCALE_LANGUAGE_EN,LOCALE_REGION_IN,COUNTRY_GEO_NULL,TIME_ZONE_KOLKATA,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_UAE_EN,"UAE en",LOCALE_LANGUAGE_EN,LOCALE_REGION_BH,COUNTRY_GEO_NULL,TIME_ZONE_KUWAIT,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_ISRAEL_AR,"Israel ar",LOCALE_LANGUAGE_IW,LOCALE_REGION_IL,COUNTRY_GEO_NULL,TIME_ZONE_JERUSALEM,USER_DEFINE_NULL},\r
+ {DEVICE_TYPE_AREA,AREA_ID_NETHERLANDS_INC_BONAIRE_ENUS,"Netherlands(inc Bonn) en_US",LOCALE_LANGUAGE_NL,LOCALE_REGION_NL,COUNTRY_GEO_NULL,TIME_ZONE_AMSTERDAM_BERLIN,USER_DEFINE_NULL},\r
+};\r
+\r
+\r
+static int board_id_init_data(struct board_id_private_data *board_id)\r
+{\r
+ int result = 0;\r
+ \r
+ memcpy(board_id->area_area_id_name, area_area_id_name, sizeof(area_area_id_name)); \r
+ memcpy(board_id->area_operator_id_name, area_operator_id_name, sizeof(area_operator_id_name));\r
+ memcpy(board_id->area_reserve_id_name, area_reserve_id_name, sizeof(area_reserve_id_name));\r
+ memcpy(board_id->tp_id_name, tp_id_name, sizeof(tp_id_name));\r
+ memcpy(board_id->lcd_id_name, lcd_id_name, sizeof(lcd_id_name));\r
+ memcpy(board_id->key_id_name, key_id_name, sizeof(key_id_name));\r
+ memcpy(board_id->codec_id_name, codec_id_name, sizeof(codec_id_name));\r
+ memcpy(board_id->wifi_id_name, wifi_id_name, sizeof(wifi_id_name));\r
+ memcpy(board_id->bt_id_name, bt_id_name, sizeof(bt_id_name)); \r
+ memcpy(board_id->gps_id_name, gps_id_name, sizeof(gps_id_name));\r
+ memcpy(board_id->fm_id_name, fm_id_name, sizeof(fm_id_name));\r
+ memcpy(board_id->modem_id_name, modem_id_name, sizeof(modem_id_name)); \r
+ memcpy(board_id->ddr_id_name, ddr_id_name, sizeof(ddr_id_name));\r
+ memcpy(board_id->flash_id_name, flash_id_name, sizeof(flash_id_name));\r
+ memcpy(board_id->hdmi_id_name, hdmi_id_name, sizeof(hdmi_id_name));\r
+ memcpy(board_id->battery_id_name, battery_id_name, sizeof(battery_id_name));\r
+ memcpy(board_id->charge_id_name, charge_id_name, sizeof(charge_id_name)); \r
+ memcpy(board_id->backlight_id_name, backlight_id_name, sizeof(backlight_id_name));\r
+ memcpy(board_id->headset_id_name, headset_id_name, sizeof(headset_id_name));\r
+ memcpy(board_id->micphone_id_name, micphone_id_name, sizeof(micphone_id_name));\r
+ memcpy(board_id->speaker_id_name, speaker_id_name, sizeof(speaker_id_name));\r
+ memcpy(board_id->vibrator_id_name, vibrator_id_name, sizeof(vibrator_id_name));\r
+ memcpy(board_id->tv_id_name, tv_id_name, sizeof(tv_id_name)); \r
+ memcpy(board_id->echip_id_name, echip_id_name, sizeof(echip_id_name)); \r
+ memcpy(board_id->hub_id_name, hub_id_name, sizeof(hub_id_name));\r
+ memcpy(board_id->tpad_id_name, tpad_id_name, sizeof(tpad_id_name));\r
+ \r
+ memcpy(board_id->pmic_id_name, pmic_id_name, sizeof(pmic_id_name));\r
+ memcpy(board_id->regulator_id_name, regulator_id_name, sizeof(regulator_id_name));\r
+ memcpy(board_id->rtc_id_name, rtc_id_name, sizeof(rtc_id_name));\r
+ memcpy(board_id->camera_front_id_name, camera_front_id_name, sizeof(camera_front_id_name));\r
+ memcpy(board_id->camera_back_id_name, camera_back_id_name, sizeof(camera_back_id_name)); \r
+ memcpy(board_id->sensor_angle_id_name, sensor_angle_id_name, sizeof(sensor_angle_id_name));\r
+ memcpy(board_id->sensor_accel_id_name, sensor_accel_id_name, sizeof(sensor_accel_id_name));\r
+ memcpy(board_id->sensor_compass_id_name, sensor_compass_id_name, sizeof(sensor_compass_id_name));\r
+ memcpy(board_id->sensor_gyroscope_id_name, sensor_gyroscope_id_name, sizeof(sensor_gyroscope_id_name));\r
+ memcpy(board_id->sensor_light_id_name, sensor_light_id_name, sizeof(sensor_light_id_name));\r
+ memcpy(board_id->sensor_proximity_id_name, sensor_proximity_id_name, sizeof(sensor_proximity_id_name));\r
+ memcpy(board_id->sensor_temperature_id_name, sensor_temperature_id_name, sizeof(sensor_temperature_id_name)); \r
+ memcpy(board_id->sensor_pressure_id_name, sensor_pressure_id_name, sizeof(sensor_pressure_id_name));\r
+\r
+ board_id->device_start_addr[DEVICE_TYPE_TP] = board_id->tp_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_LCD] = board_id->lcd_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_KEY] = board_id->key_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_CODEC] = board_id->codec_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_WIFI] = board_id->wifi_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_BT] = board_id->bt_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_GPS] = board_id->gps_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_FM] = board_id->fm_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_MODEM] = board_id->modem_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_DDR] = board_id->ddr_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_FLASH] = board_id->flash_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_HDMI] = board_id->hdmi_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_BATTERY] = board_id->battery_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_CHARGE] = board_id->charge_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_BACKLIGHT] = board_id->backlight_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_HEADSET] = board_id->headset_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_MICPHONE] = board_id->micphone_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_SPEAKER] = board_id->speaker_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_VIBRATOR] = board_id->vibrator_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_TV] = board_id->tv_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_ECHIP] = board_id->echip_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_HUB] = board_id->hub_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_TPAD] = board_id->tpad_id_name;\r
+ \r
+ board_id->device_start_addr[DEVICE_TYPE_PMIC] = board_id->pmic_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_REGULATOR] = board_id->regulator_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_RTC] = board_id->rtc_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_CAMERA_FRONT] = board_id->camera_front_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_CAMERA_BACK] = board_id->camera_back_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_ANGLE] = board_id->sensor_angle_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_ACCEL] = board_id->sensor_accel_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_COMPASS] = board_id->sensor_compass_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_GYRO] = board_id->sensor_gyroscope_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_LIGHT] = board_id->sensor_light_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_PROXIMITY] = board_id->sensor_proximity_id_name;\r
+ board_id->device_start_addr[DEVICE_TYPE_TEMPERATURE] = board_id->sensor_temperature_id_name; \r
+ board_id->device_start_addr[DEVICE_TYPE_PRESSURE] = board_id->sensor_pressure_id_name;\r
+\r
+\r
+ board_id->device_num_max[DEVICE_TYPE_TP] = TP_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_LCD] = LCD_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_KEY] = KEY_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_CODEC] = CODEC_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_WIFI] = WIFI_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_BT] = BT_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_GPS] = GPS_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_FM] = FM_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_MODEM] = MODEM_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_DDR] = DDR_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_FLASH] = FLASH_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_HDMI] = HDMI_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_BATTERY] = BATTERY_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_CHARGE] = CHARGE_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_BACKLIGHT] = BACKLIGHT_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_HEADSET] = HEADSET_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_MICPHONE] = MICPHONE_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_SPEAKER] = SPEAKER_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_VIBRATOR] = VIBRATOR_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_TV] = TV_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_ECHIP] = ECHIP_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_HUB] = HUB_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_TPAD] = TPAD_ID_NUMS;\r
+ \r
+ board_id->device_num_max[DEVICE_TYPE_PMIC] = PMIC_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_REGULATOR] = REGULATOR_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_RTC] = RTC_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_CAMERA_FRONT] = CAMERA_FRONT_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_CAMERA_BACK] = CAMERA_BACK_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_ANGLE] = ANGLE_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_ACCEL] = ACCEL_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_COMPASS] = COMPASS_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_GYRO] = GYRO_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_LIGHT] = LIGHT_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_PROXIMITY] = PROXIMITY_ID_NUMS;\r
+ board_id->device_num_max[DEVICE_TYPE_TEMPERATURE] = TEMPERATURE_ID_NUMS; \r
+ board_id->device_num_max[DEVICE_TYPE_PRESSURE] = PRESSURE_ID_NUMS;\r
+ \r
+ \r
+ return result;\r
+\r
+}\r
+\r
+\r
+char board_id_get(enum type_devices type)\r
+{\r
+ return g_board_id->device_selected[type].id;\r
+}\r
+EXPORT_SYMBOL_GPL(board_id_get);\r
+\r
+\r
+#include <asm/pgtable.h>\r
+static __init void rk30_get_vender_sector(u8 *buf)\r
+{\r
+#define RK30_NANDC_BASE IOMEM(0xFEC00000)\r
+ u32 v, a;\r
+ u32 flag = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ;\r
+\r
+ a = (u32)pgd_val(pgd_offset_k((u32)RK30_NANDC_BASE));\r
+ v = readl_relaxed(a);\r
+ writel_relaxed(flag | ((RK30_NANDC_PHYS >> 20) << 20), a);\r
+\r
+ memcpy(buf, RK30_NANDC_BASE + 0x1400 + 0x08, 0x200 - 0x08);\r
+\r
+ writel_relaxed(v, a);\r
+}\r
+\r
+\r
+static __init void rk30_get_idb_sector(u8 *buf)\r
+{\r
+#define RK30_NANDC_BASE IOMEM(0xFEC00000)\r
+ u32 v, a;\r
+ u32 flag = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ;\r
+\r
+ a = (u32)pgd_val(pgd_offset_k((u32)RK30_NANDC_BASE));\r
+ v = readl_relaxed(a);\r
+ writel_relaxed(flag | ((RK30_NANDC_PHYS >> 20) << 20), a);\r
+\r
+ memcpy(buf, RK30_NANDC_BASE + 0x1600, 0x200);\r
+\r
+ writel_relaxed(v, a);\r
+}\r
+\r
+static int board_id_vendor_data_check(char *pbuf)\r
+{\r
+ int sum = 0;\r
+ int i = 0;\r
+ int temp = 0;\r
+\r
+ //for(i=DEVICE_TYPE_NULL; i<DEVICE_NUM_TYPES; i++)\r
+ //printk("buf[%d]=0x%x\n",i, pbuf[i]);\r
+\r
+ temp = ((int)(pbuf[DEVICE_TYPE_SUM] << 24) | ((int)(pbuf[DEVICE_TYPE_SUM+1] << 16)) | ((int)(pbuf[DEVICE_TYPE_SUM+2] << 8)) | (int)(pbuf[DEVICE_TYPE_SUM+3]));\r
+ \r
+ for(i=DEVICE_TYPE_AREA; i<DEVICE_NUM_TYPES; i++)\r
+ sum += pbuf[i];\r
+\r
+ if((temp != sum) || (temp == 0) || (sum == 0))\r
+ {\r
+ printk("%s:sum=0x%x, temp=0x%x\n", __func__, sum, temp);\r
+ return -1;\r
+ }\r
+\r
+ return 0;\r
+}\r
+\r
+int board_id_get_from_flash(char *pbuf, int type)\r
+{\r
+ char sn_buf[512];\r
+ char vendor_buf[504]; \r
+ static char vendor_buf_temp[504];\r
+ int i = 0;\r
+\r
+ printk("%s:\n",__func__);\r
+ memset(sn_buf,0,512); \r
+ memset(vendor_buf,0,504); \r
+ memset(vendor_buf_temp,0,504);\r
+ if(type == BID_MM_IOMEM)\r
+ {\r
+ rk30_get_idb_sector(sn_buf);\r
+ //print_hex_dump(KERN_INFO, "idb: ", DUMP_PREFIX_OFFSET, 16, 1, sn_buf, 0x200, true);\r
+ rk30_get_vender_sector(vendor_buf_temp); \r
+ //print_hex_dump(KERN_INFO, "idb: ", DUMP_PREFIX_OFFSET, 16, 1, vendor_buf_temp, 504, true);\r
+ }\r
+ else\r
+ {\r
+ GetSNSectorInfoBeforeNandInit(sn_buf);\r
+ GetVendor0InfoBeforeNandInit(vendor_buf_temp);\r
+ }\r
+\r
+ printk("%s GUID:",__func__);\r
+ for(i=480; i<496; i++)\r
+ {\r
+ printk("%02x",sn_buf[i]);\r
+ if((i==483) || (i==485) || (i==487) || (i==489))\r
+ printk("-");\r
+ }\r
+ printk("\n");\r
+ \r
+ \r
+ memcpy(&vendor_buf[DEVICE_TYPE_SUM], vendor_buf_temp, 127-DEVICE_TYPE_AREA+1);\r
+ \r
+ if(!board_id_vendor_data_check(vendor_buf))\r
+ {\r
+ memcpy(pbuf, vendor_buf, DEVICE_NUM_TYPES);\r
+\r
+ printk("%s:vendor data is valid\n",__func__);\r
+ }\r
+ else if(!board_id_vendor_data_check(sn_buf))\r
+ {\r
+ memcpy(pbuf, sn_buf, DEVICE_NUM_TYPES); \r
+ \r
+ printk("%s:idblock data is valid\n",__func__);\r
+ }\r
+ else\r
+ {\r
+ pbuf[DEVICE_TYPE_AREA] = AREA_ID_UNITED_STATES; \r
+ pbuf[DEVICE_TYPE_OPERATOR] = (20000 >> 8); \r
+ pbuf[DEVICE_TYPE_OPERATOR+1] = (20000 & 0xff); //no\r
+ pbuf[DEVICE_TYPE_RESERVE] = 0; \r
+ pbuf[DEVICE_TYPE_STATUS] = 0x01;\r
+ \r
+ pbuf[DEVICE_TYPE_TP] = TP_ID_EKTF2K; \r
+ pbuf[DEVICE_TYPE_LCD] = LCD_ID_EDID_I2C;\r
+ pbuf[DEVICE_TYPE_KEY] = KEY_ID_ENGLISH_US; \r
+ pbuf[DEVICE_TYPE_CODEC] = CODEC_ID_RT5640;\r
+ pbuf[DEVICE_TYPE_WIFI] = WIFI_ID_BCM;\r
+ pbuf[DEVICE_TYPE_BT] = BT_ID_RFKILL; \r
+ pbuf[DEVICE_TYPE_GPS] = GPS_ID_RK_HV5820;\r
+ pbuf[DEVICE_TYPE_FM] = FM_ID_NULL;\r
+ pbuf[DEVICE_TYPE_MODEM] = MODEM_ID_NULL; \r
+ pbuf[DEVICE_TYPE_DDR] = DDR_ID_NULL;\r
+ pbuf[DEVICE_TYPE_FLASH] = DDR_ID_NULL;\r
+ pbuf[DEVICE_TYPE_HDMI] = HDMI_ID_CAT66121;\r
+ pbuf[DEVICE_TYPE_BATTERY] = BATTERY_ID_BLUEBERRY;\r
+ pbuf[DEVICE_TYPE_CHARGE] = CHARGE_ID_NULL;\r
+ pbuf[DEVICE_TYPE_BACKLIGHT] = BACKLIGHT_ID_RK29;\r
+ pbuf[DEVICE_TYPE_HEADSET] = HEADSET_ID_RK29;\r
+ pbuf[DEVICE_TYPE_MICPHONE] = MICPHONE_ID_NULL;\r
+ pbuf[DEVICE_TYPE_SPEAKER] = SPEAKER_ID_1W5;\r
+ pbuf[DEVICE_TYPE_VIBRATOR] = VIBRATOR_ID_RK29;\r
+ pbuf[DEVICE_TYPE_TV] = TV_ID_NULL; \r
+ pbuf[DEVICE_TYPE_ECHIP] = ECHIP_ID_IT8561; \r
+ pbuf[DEVICE_TYPE_HUB] = HUB_ID_USB4604;\r
+ pbuf[DEVICE_TYPE_TPAD] = TPAD_ID_ELAN;\r
+ \r
+ pbuf[DEVICE_TYPE_PMIC] = PMIC_ID_NULL;\r
+ pbuf[DEVICE_TYPE_REGULATOR] = REGULATOR_ID_NULL;\r
+ pbuf[DEVICE_TYPE_RTC] = RTC_ID_HYM8563;\r
+ pbuf[DEVICE_TYPE_CAMERA_FRONT] = CAMERA_FRONT_ID_NULL;\r
+ pbuf[DEVICE_TYPE_CAMERA_BACK] = CAMERA_BACK_ID_NULL; \r
+ pbuf[DEVICE_TYPE_ANGLE] = ANGLE_ID_NULL;\r
+ pbuf[DEVICE_TYPE_ACCEL] = ACCEL_ID_NULL;\r
+ pbuf[DEVICE_TYPE_COMPASS] = COMPASS_ID_NULL;\r
+ pbuf[DEVICE_TYPE_GYRO] = GYRO_ID_NULL;\r
+ pbuf[DEVICE_TYPE_LIGHT] = LIGHT_ID_NULL;\r
+ pbuf[DEVICE_TYPE_PROXIMITY] = PROXIMITY_ID_NULL;\r
+ pbuf[DEVICE_TYPE_TEMPERATURE] = TEMPERATURE_ID_NULL;\r
+ pbuf[DEVICE_TYPE_PRESSURE] = PRESSURE_ID_NULL;\r
+ \r
+ printk("%s:vendor and idblock data is invalid,use default config\n",__func__);\r
+ \r
+ }\r
+\r
+ return 0;\r
+\r
+}\r
+EXPORT_SYMBOL_GPL(board_id_get_from_flash);\r
+\r
+\r
+\r
+int __init board_id_resolve(struct board_id_private_data *board_id)\r
+{\r
+ int result = 0;\r
+ int i = 0, j=0;\r
+ \r
+ board_id_get_from_flash(board_id->vendor_data, BID_MM_IOREMAP);\r
+ \r
+ board_id->area_select = board_id->area_area_id_name[(unsigned)board_id->vendor_data[DEVICE_TYPE_AREA]];\r
+\r
+ for(j=OPERATOR_ID_20000_NO_OPERATOR; j<OPERATOR_ID_NUMS; j++)\r
+ {\r
+ if(board_id->area_operator_id_name[j].id == ((int)(board_id->vendor_data[DEVICE_TYPE_OPERATOR] << 8) | (int)(board_id->vendor_data[DEVICE_TYPE_OPERATOR+1])))\r
+ {\r
+ board_id->operator_select = board_id->area_operator_id_name[j];\r
+ break;\r
+ }\r
+ }\r
+ \r
+ board_id->reserve_select = board_id->area_reserve_id_name[(unsigned)board_id->vendor_data[DEVICE_TYPE_RESERVE]];\r
+ \r
+ printk("%s:area type=%d,id=%d,country_area=%s,locale_region=%s,locale_language=%s\n",__func__,board_id->area_select.type,board_id->area_select.id,board_id->area_select.country_area,board_id->area_select.locale_region, board_id->area_select.locale_language); \r
+ //printk("%s:operator type=%d,id=%d,locale_region=%s,operator_name=%s\n",__func__,board_id->operator_select.type,board_id->operator_select.id,board_id->operator_select.locale_region, board_id->operator_select.operator_name);\r
+ //printk("%s:reserve type=%d,id=%d,locale_region=%s,reserve_name=%s\n",__func__,board_id->reserve_select.type,board_id->reserve_select.id,board_id->reserve_select.locale_region,board_id->reserve_select.reserve_name);\r
+ \r
+ for(j=AREA_ID_NULL; j<AREA_ID_NUMS; j++)\r
+ {\r
+ if(board_id->area_area_id_name[j].id != j)\r
+ printk("%s:type=%d, country_area=%s, id=%d != j=%d\n",__func__,board_id->area_area_id_name[j].type, board_id->area_area_id_name[j].country_area, board_id->area_area_id_name[j].id, j);\r
+ }\r
+ \r
+ for(i=DEVICE_TYPE_TP; i<DEVICE_NUM_TYPES; i++)\r
+ {\r
+ board_id->device_selected[i] = board_id->device_start_addr[i][(unsigned)board_id->vendor_data[i]];\r
+ \r
+ if(board_id->device_selected[i].id != board_id->vendor_data[i])\r
+ printk("%s:id error! device_selected[%d].id = %d, vendor_data[%d] =%d\n",__func__, i, board_id->device_selected[i].id, i, board_id->vendor_data[i]);\r
+\r
+ for(j=0; j<board_id->device_num_max[i]; j++)\r
+ {\r
+ if(board_id->device_start_addr[i][j].id != j)\r
+ printk("%s:warning type=%d, name=%s,id=%d != j=%d\n",__func__, board_id->device_start_addr[i][j].type, board_id->device_start_addr[i][j].type_name, board_id->device_start_addr[i][j].id, j);\r
+ }\r
+ \r
+ //printk("buf[%d].id = %d,type=%s, dev=%s\n",i, board_id->device_selected[i].id, board_id->device_selected[i].type_name, board_id->device_selected[i].dev_name);\r
+ }\r
+ printk("\n");\r
+ \r
+ return result;\r
+}\r
+\r
+\r
+static int __init board_id_add_devices(struct board_id_private_data *board_id, struct board_device_table *device_table, int device_table_size)\r
+{ \r
+ int num = 0;\r
+ int i = 0, j=0, k=0;\r
+ struct i2c_board_info *i2c_info_temp = NULL;\r
+ struct spi_board_info *spi_info_temp = NULL;\r
+ struct platform_device **devices = NULL;\r
+ struct valid_invalid_name *valid_name = NULL;\r
+ char *buf = board_id->vendor_data;\r
+ struct device_id_name *device_id_name_start = board_id->tp_id_name;\r
+\r
+ if(device_table[BOARD_DEVICE_TYPE_VALID].type == BOARD_DEVICE_TYPE_VALID)\r
+ valid_name = (struct valid_invalid_name*)device_table[BOARD_DEVICE_TYPE_VALID].addr;\r
+ \r
+ for(num=0; num<device_table_size; num++)\r
+ {\r
+ switch(device_table[num].type)\r
+ {\r
+ case BOARD_DEVICE_TYPE_I2C:\r
+ i2c_info_temp = (struct i2c_board_info *)device_table[num].addr;\r
+ if(!i2c_info_temp)\r
+ continue;\r
+\r
+ \r
+ for(i=0; i<device_table[num].size; i++)\r
+ { \r
+\r
+ \r
+ #if 1\r
+ for(j=0; j<device_table[BOARD_DEVICE_TYPE_VALID].size; j++)\r
+ {\r
+ \r
+ if(!valid_name) break;\r
+\r
+ if(!strcmp(i2c_info_temp[i].type, valid_name[j].name))\r
+ {\r
+ i2c_register_board_info(device_table[num].bus, &i2c_info_temp[i], 1);\r
+ printk("%s:i2c%d_info[%d] name=%s valid always\n",__func__,device_table[num].bus, i, i2c_info_temp[i].type);\r
+ continue;\r
+ }\r
+ }\r
+\r
+ #endif\r
+ for(j=DEVICE_TYPE_TP; j<DEVICE_NUM_TYPES; j++)\r
+ { \r
+ device_id_name_start = board_id->device_start_addr[j];\r
+\r
+ for(k=0; k<board_id->device_num_max[j]; k++)\r
+ {\r
+ if(!device_id_name_start)\r
+ {\r
+ printk("%s:address is null,type=%d,id=%d\n",__func__, j, k);\r
+ break;\r
+ }\r
+\r
+ if((device_id_name_start->type == j) && (buf[j] == device_id_name_start->id) && (!strcmp(i2c_info_temp[i].type, device_id_name_start->driver_name)))\r
+ {\r
+ i2c_register_board_info(device_table[num].bus, &i2c_info_temp[i], 1);\r
+ printk("%s:i2c%d_info[%d] name=%s,type=%d,id=%d\n",__func__, device_table[num].bus, i, i2c_info_temp[i].type, device_id_name_start->type, device_id_name_start->id);\r
+ }\r
+\r
+ device_id_name_start++;\r
+ }\r
+\r
+ }\r
+ \r
+ \r
+ }\r
+ \r
+ break;\r
+\r
+ case BOARD_DEVICE_TYPE_SPI:\r
+ spi_info_temp = (struct spi_board_info *)device_table[num].addr;\r
+ if(!spi_info_temp)\r
+ continue;\r
+\r
+ \r
+ for(i=0; i<device_table[num].size; i++)\r
+ { \r
+ \r
+ for(j=0; j<device_table[BOARD_DEVICE_TYPE_VALID].size; j++)\r
+ {\r
+ \r
+ if(!valid_name) break;\r
+ \r
+ if(!strcmp(spi_info_temp[i].modalias, valid_name[j].name))\r
+ {\r
+ spi_register_board_info(&spi_info_temp[i], 1);\r
+ printk("%s:spi%d_info[%d] name=%s valid always\n",__func__, spi_info_temp[i].bus_num, i, spi_info_temp[i].modalias);\r
+ continue;\r
+ }\r
+ }\r
+\r
+ \r
+ for(j=DEVICE_TYPE_TP; j<DEVICE_NUM_TYPES; j++)\r
+ { \r
+ device_id_name_start = board_id->device_start_addr[j];\r
+\r
+ for(k=0; k<board_id->device_num_max[j]; k++)\r
+ {\r
+ if(!device_id_name_start)\r
+ {\r
+ printk("%s:address is null,type=%d,id=%d\n",__func__, j, k);\r
+ break;\r
+ }\r
+\r
+ if((device_id_name_start->type == j) && (buf[j] == device_id_name_start->id) && (!strcmp(spi_info_temp[i].modalias, device_id_name_start->driver_name)))\r
+ {\r
+ spi_register_board_info(&spi_info_temp[i], 1);\r
+ printk("%s:spi%d_info[%d] name=%s,type=%d,id=%d\n",__func__, spi_info_temp[i].bus_num, i, spi_info_temp[i].modalias, device_id_name_start->type, device_id_name_start->id);\r
+ }\r
+\r
+ device_id_name_start++;\r
+ }\r
+\r
+ }\r
+ \r
+ \r
+ }\r
+ \r
+ break;\r
+\r
+ case BOARD_DEVICE_TYPE_PLATFORM: \r
+ devices = (struct platform_device**)(device_table[num].addr);\r
+ if(!devices)\r
+ continue;\r
+ \r
+ for(i=0; i<device_table[num].size; i++)\r
+ {\r
+\r
+ for(j=0; j<device_table[BOARD_DEVICE_TYPE_VALID].size; j++)\r
+ { \r
+ if(!valid_name) break;\r
+ \r
+ if(!strcmp(devices[i]->name, valid_name[j].name))\r
+ {\r
+ platform_add_devices(&devices[i], 1);\r
+ printk("%s:devices[%d] name=%s valid always\n",__func__, i, devices[i]->name);\r
+ continue;\r
+ }\r
+ }\r
+\r
+\r
+ for(j=DEVICE_TYPE_TP; j<DEVICE_NUM_TYPES; j++)\r
+ { \r
+ device_id_name_start = board_id->device_start_addr[j];\r
+ \r
+ for(k=0; k<board_id->device_num_max[j]; k++)\r
+ {\r
+ if(!device_id_name_start)\r
+ {\r
+ printk("%s:address is null,type=%d,id=%d\n",__func__, j, k);\r
+ break;\r
+ }\r
+\r
+ if((device_id_name_start->type == j) && (buf[j] == device_id_name_start->id) && (!strcmp(devices[i]->name, device_id_name_start->driver_name)))\r
+ {\r
+ platform_add_devices(&devices[i], 1);\r
+ \r
+ printk("%s:devices[%d] name=%s,type=%d, id=%d\n",__func__, i, devices[i]->name, device_id_name_start->type, device_id_name_start->id);\r
+ \r
+ }\r
+\r
+ device_id_name_start++;\r
+ }\r
+\r
+ }\r
+ }\r
+\r
+ \r
+ break;\r
+ \r
+ default:\r
+ printk("%s:ignore type=%d\n",__func__, device_table[num].type);\r
+ break;\r
+ \r
+ }\r
+\r
+\r
+ }\r
+\r
+ return 0;\r
+\r
+}\r
+\r
+\r
+\r
+static int __init board_id_probe(struct platform_device *pdev)\r
+{\r
+ struct board_id_platform_data *pdata = pdev->dev.platform_data;\r
+ struct board_id_private_data *board_id = NULL;\r
+ int i = 0, result; \r
+\r
+ if(!pdata)\r
+ return -1;\r
+ \r
+ if(pdata->init_platform_hw)\r
+ pdata->init_platform_hw();\r
+ \r
+ board_id = kzalloc(sizeof(struct board_id_private_data), GFP_KERNEL);\r
+ if(board_id == NULL)\r
+ {\r
+ printk("%s:fail malloc board_id data\n",__func__);\r
+ return -1;\r
+ }\r
+\r
+ result = board_id_init_data(board_id);\r
+ if (result < 0) {\r
+ printk("%s:copydata error\n",__func__);\r
+ return result;\r
+ }\r
+\r
+ result = board_id_resolve(board_id);\r
+ if (result < 0) {\r
+ printk("%s:resolve boardid error\n",__func__);\r
+ return result;\r
+ }\r
+\r
+ \r
+ if(pdata->device_table && pdata->device_table_size)\r
+ board_id_add_devices(board_id, pdata->device_table, pdata->device_table_size);\r
+ \r
+ board_id->pdata = pdata;\r
+ board_id->dev = &pdev->dev;\r
+ \r
+ \r
+ platform_set_drvdata(pdev, board_id); \r
+ \r
+ mutex_init(&board_id->operation_mutex); \r
+ \r
+ g_board_id = board_id;\r
+ \r
+ printk("%s:init success\n",__func__);\r
+ return result;\r
+\r
+}\r
+\r
+int board_id_suspend(struct platform_device *pdev, pm_message_t state)\r
+{\r
+ struct board_id_private_data *board_id = platform_get_drvdata(pdev);\r
+ \r
+ \r
+ return 0;\r
+}\r
+\r
+int board_id_resume(struct platform_device *pdev)\r
+{\r
+ struct board_id_private_data *board_id = platform_get_drvdata(pdev);\r
+ \r
+\r
+ return 0;\r
+}\r
+\r
+void board_id_shutdown(struct platform_device *pdev)\r
+{\r
+ struct board_id_private_data *board_id = platform_get_drvdata(pdev);\r
+\r
+ \r
+}\r
+\r
+static struct platform_driver board_id_driver = {\r
+ //.shutdown = board_id_shutdown,\r
+ .suspend = board_id_suspend,\r
+ .resume = board_id_resume,\r
+ .driver = {\r
+ .name = "board_id",\r
+ .owner = THIS_MODULE,\r
+ },\r
+};\r
+\r
+static int __init board_id_init(void)\r
+{\r
+ return platform_driver_probe(&board_id_driver, board_id_probe);\r
+}\r
+\r
+static void __exit board_id_exit(void)\r
+{\r
+ platform_driver_unregister(&board_id_driver);\r
+}\r
+\r
+//arch_initcall_sync(board_id_init);\r
+arch_initcall(board_id_init);\r
+module_exit(board_id_exit);\r
+\r
+MODULE_AUTHOR("ROCKCHIP Corporation:lw@rock-chips.com");\r
+MODULE_DESCRIPTION("rockchip board id driver");\r
+MODULE_LICENSE("GPL");\r
+\r
struct board_id_platform_data {
int gpio_pin[32];
int num_gpio;
- int (*init_platform_hw)(void);
+ char *board_id_buf;
+ int (*init_platform_hw)(void);
int (*exit_platform_hw)(void);
+ struct board_device_table *device_table;
+ int device_table_size;
int (*init_parameter)(int id);
};
--- /dev/null
+\r
+enum board_id_hw{\r
+ BOARD_ID_INVALID = -1,\r
+ \r
+ BOARD_ID_DS763 = 0,\r
+ BOARD_ID_C8002,\r
+ BOARD_ID_C8003,\r
+ BOARD_ID_C1014,\r
+ BOARD_ID_C7018,\r
+ BOARD_ID_TA7CP01,\r
+ BOARD_ID_TA9CP01,\r
+ BOARD_ID_TA0CP01,\r
+\r
+ BOARD_ID_AIO_BAT,\r
+ BOARD_ID_AIO_NOBAT,\r
+ \r
+ BOARD_ID_NUM,\r
+};\r
--- /dev/null
+#ifndef __BOARD_ID_OPERATOR_H
+#define __BOARD_ID_OPERATOR_H
+
+#define RESERVE_ID_NUMS 1
+
+enum id_operator{
+ OPERATOR_ID_20000_NO_OPERATOR,
+ OPERATOR_ID_20201_COSMOTE_GR,
+ OPERATOR_ID_20205_VODAFONE_GR,
+ OPERATOR_ID_20210_TELESTET_GR,
+ OPERATOR_ID_20404_VODAFONE_NL_NL,
+ OPERATOR_ID_20408_KPN_NL,
+ OPERATOR_ID_20412_O2_NL_NL,
+ OPERATOR_ID_20416_BEN_NL,
+ OPERATOR_ID_20420_DUTCHTONE_NL,
+ OPERATOR_ID_20601_PROXIMUS_BE,
+ OPERATOR_ID_20610_MOBISTAR_BE,
+ OPERATOR_ID_20620_ORANGE_BE,
+ OPERATOR_ID_20801_ORANGE_FR,
+ OPERATOR_ID_20810_SFR_FR,
+ OPERATOR_ID_20820_BOUYGTEL_FR,
+ OPERATOR_ID_21303_MOBILAND_AD,
+ OPERATOR_ID_21401_VODAFONE_E_ES,
+ OPERATOR_ID_21402_MOVISTAR_ES,
+ OPERATOR_ID_21403_AMENA_ES,
+ OPERATOR_ID_21404_XFERA_ES,
+ OPERATOR_ID_21407_MOVISTAR_ES,
+ OPERATOR_ID_21601_PANNON_GSM_HU,
+ OPERATOR_ID_21630_WESTEL_HU,
+ OPERATOR_ID_21670_VODAFONE_HU,
+ OPERATOR_ID_21803_ERONET_BA,
+ OPERATOR_ID_21805_MOBILNA_SRPSKA_BA,
+ OPERATOR_ID_21890_GSM_BIH_BA,
+ OPERATOR_ID_21901_CRONET_HR,
+ OPERATOR_ID_21910_VIP_HR,
+ OPERATOR_ID_22001_MOBTEL_YU,
+ OPERATOR_ID_22002_PROMONTE_YU,
+ OPERATOR_ID_22003_TELEKOM_SRBIJA_YU,
+ OPERATOR_ID_22004_MONET_YU,
+ OPERATOR_ID_22201_TIM_IT,
+ OPERATOR_ID_22210_VODAFONE_IT_IT,
+ OPERATOR_ID_22288_WIND_IT,
+ OPERATOR_ID_22298_BLU_SPA_IT,
+ OPERATOR_ID_22601_CONNEX_RO,
+ OPERATOR_ID_22603_COSMOROM_RO,
+ OPERATOR_ID_22610_DIALOG_RO,
+ OPERATOR_ID_22801_SWISS_GSM_CH,
+ OPERATOR_ID_22802_SUNRISE_CH,
+ OPERATOR_ID_22803_ORANGE_CH,
+ OPERATOR_ID_23001_PAEGAS_CZ,
+ OPERATOR_ID_23002_EUROTEL_CZ,
+ OPERATOR_ID_23003_OSKAR_CZ,
+ OPERATOR_ID_23101_GLOBTEL_SK,
+ OPERATOR_ID_23102_EUROTEL_SK,
+ OPERATOR_ID_23201_A1_AT,
+ OPERATOR_ID_23203_T_MOBILE_AT,
+ OPERATOR_ID_23205_ONE_AT,
+ OPERATOR_ID_23207_TELE_RING_AT,
+ OPERATOR_ID_23410_O2_UK_GB,
+ OPERATOR_ID_23415_VODAFONE_GB,
+ OPERATOR_ID_23430_T_MOBILE_UK_GB,
+ OPERATOR_ID_23431_T_MOBILE_UK_GB,
+ OPERATOR_ID_23432_T_MOBILE_UK_GB,
+ OPERATOR_ID_23433_ORANGE_GB,
+ OPERATOR_ID_23450_JT_GSM_GB,
+ OPERATOR_ID_23455_GUERNSEY_TEL_GB,
+ OPERATOR_ID_23458_MANX_GB,
+ OPERATOR_ID_23801_TDK_MOBIL_DK,
+ OPERATOR_ID_23802_SONOFON_DK,
+ OPERATOR_ID_23820_TELIA_DK,
+ OPERATOR_ID_23830_ORANGE_DK,
+ OPERATOR_ID_24001_TELIA_S_SE,
+ OPERATOR_ID_24007_IQ_SE,
+ OPERATOR_ID_24008_VODAFONE_SE,
+ OPERATOR_ID_24201_TELENOR_NO,
+ OPERATOR_ID_24202_NETCOM_NO,
+ OPERATOR_ID_24403_TELIA_FI,
+ OPERATOR_ID_24405_RADIOLINJA_FI,
+ OPERATOR_ID_24409_FINNET_FI,
+ OPERATOR_ID_24412_2G_FI,
+ OPERATOR_ID_24414_AMT_FI,
+ OPERATOR_ID_24491_SONERA_FI,
+ OPERATOR_ID_24601_OMNITEL_LT,
+ OPERATOR_ID_24602_BITE_GSM_LT,
+ OPERATOR_ID_24603_TELE2_LT,
+ OPERATOR_ID_24701_LMT_GSM_LV,
+ OPERATOR_ID_24702_BALTCOM_LV,
+ OPERATOR_ID_24801_EMT_GSM_EE,
+ OPERATOR_ID_24802_RLE_EE,
+ OPERATOR_ID_24803_Q_GSM_EE,
+ OPERATOR_ID_25001_MTS_RU,
+ OPERATOR_ID_25002_NORTHWEST_GSM_RU,
+ OPERATOR_ID_25003_NCC_RU,
+ OPERATOR_ID_25005_SCS_RU,
+ OPERATOR_ID_25007_SMARTS_RU,
+ OPERATOR_ID_25010_DTC_RU,
+ OPERATOR_ID_25011_ORENSOT_RU,
+ OPERATOR_ID_25012_FAR_EAST_RU,
+ OPERATOR_ID_25013_KUBAN_GSM_RU,
+ OPERATOR_ID_25016_NTC_RU,
+ OPERATOR_ID_25017_ERMAK_RMS_RU,
+ OPERATOR_ID_25028_EXTEL_RU,
+ OPERATOR_ID_25039_URALTEL_RU,
+ OPERATOR_ID_25044_NC_GSM_RU,
+ OPERATOR_ID_25091_SONIC_DUO_RU,
+ OPERATOR_ID_25092_PRIMTEL_RU,
+ OPERATOR_ID_25093_JSC_TELECOM_XXI_RU,
+ OPERATOR_ID_25099_BEE_LINE_RU,
+ OPERATOR_ID_25501_UMC_UA,
+ OPERATOR_ID_25502_WELLCOM_UA,
+ OPERATOR_ID_25503_KYIVSTAR_UA,
+ OPERATOR_ID_25505_GOLDEN_TELECOM_UA,
+ OPERATOR_ID_25701_VELCOM_BY,
+ OPERATOR_ID_25901_VOXTEL_MD,
+ OPERATOR_ID_25902_MOLDCELL_MD,
+ OPERATOR_ID_26001_PLUS_GSM_PL,
+ OPERATOR_ID_26002_ERA_GSM_PL,
+ OPERATOR_ID_26003_IDEA_PL,
+ OPERATOR_ID_26201_T_MOBILE_DE,
+ OPERATOR_ID_26202_VODAFONE_D2_DE,
+ OPERATOR_ID_26203_E_PLUS_DE,
+ OPERATOR_ID_26207_O2_DE_DE,
+ OPERATOR_ID_26213_MOBILCOM_DE,
+ OPERATOR_ID_26601_GIBTEL_GI,
+ OPERATOR_ID_26801_VODAFONE_PT,
+ OPERATOR_ID_26803_OPTIMUS_PT,
+ OPERATOR_ID_26806_TMN_PT,
+ OPERATOR_ID_27001_LUXGSM_LU,
+ OPERATOR_ID_27077_TANGO_LU,
+ OPERATOR_ID_27201_VODAFONE_IRL_IE,
+ OPERATOR_ID_27202_O2_IRL_IE,
+ OPERATOR_ID_27203_METEOR_IE,
+ OPERATOR_ID_27401_SIMINN_IS,
+ OPERATOR_ID_27402_TAL_IS,
+ OPERATOR_ID_27404_VIKING_IS,
+ OPERATOR_ID_27601_AMC_AL,
+ OPERATOR_ID_27602_VODAFONE_AL,
+ OPERATOR_ID_27801_VODAFONE_MALTA_MT,
+ OPERATOR_ID_27821_GO_MOBILE_MT,
+ OPERATOR_ID_28001_CYTAGSM_CY,
+ OPERATOR_ID_28201_GEOCELL_GE,
+ OPERATOR_ID_28202_MAGTI_GSM_GE,
+ OPERATOR_ID_28203_GEO_03_GE,
+ OPERATOR_ID_28301_ARMGSM_AM,
+ OPERATOR_ID_28401_M_TEL_GSM_BG,
+ OPERATOR_ID_28601_TURKCELL_TR,
+ OPERATOR_ID_28602_TELSIM_TR,
+ OPERATOR_ID_28603_ARIA_TR,
+ OPERATOR_ID_28604_AYCELL_TR,
+ OPERATOR_ID_28801_FT_GSM_FO,
+ OPERATOR_ID_29001_TELE_GREENLAND_GR,
+ OPERATOR_ID_29340_SI_MOBIL_SI,
+ OPERATOR_ID_29341_MOBITEL_SI,
+ OPERATOR_ID_29401_MOBIMAK_MK,
+ OPERATOR_ID_29501_TELECOM_LI,
+ OPERATOR_ID_29502_MONTEL_LI,
+ OPERATOR_ID_29505_FL1_LI,
+ OPERATOR_ID_29577_LI_TANGO_LI,
+ OPERATOR_ID_30237_MICROCELL_CA,
+ OPERATOR_ID_30272_ROGERS_AT_T_CA,
+ OPERATOR_ID_31001_CELLNET_US,
+ OPERATOR_ID_31011_WIRELESS_2000_US,
+ OPERATOR_ID_31015_CINGULAR_US,
+ OPERATOR_ID_31016_T_MOBILE_US,
+ OPERATOR_ID_31017_CINGULAR_US,
+ OPERATOR_ID_31018_CINGULAR_US,
+ OPERATOR_ID_31020_T_MOBILE_US,
+ OPERATOR_ID_31021_T_MOBILE_US,
+ OPERATOR_ID_31022_T_MOBILE_US,
+ OPERATOR_ID_31023_T_MOBILE_US,
+ OPERATOR_ID_31024_T_MOBILE_US,
+ OPERATOR_ID_31025_T_MOBILE_US,
+ OPERATOR_ID_31026_T_MOBILE_US,
+ OPERATOR_ID_31027_T_MOBILE_US,
+ OPERATOR_ID_31031_T_MOBILE_US,
+ OPERATOR_ID_31034_WESTLINK_US,
+ OPERATOR_ID_31035_CAROLINA_US,
+ OPERATOR_ID_31038_AT_T_WIRELESS_US,
+ OPERATOR_ID_31041_CINGULAR_US,
+ OPERATOR_ID_31046_TMP_CORP_US,
+ OPERATOR_ID_31058_T_MOBILE_US,
+ OPERATOR_ID_31061_EPIC_TOUCH_US,
+ OPERATOR_ID_31063_AMERILINK_US,
+ OPERATOR_ID_31064_EINSTEIN_PCS_US,
+ OPERATOR_ID_31066_T_MOBILE_US,
+ OPERATOR_ID_31067_WIRELESS_2000_US,
+ OPERATOR_ID_31068_NPI_WIRELESS_US,
+ OPERATOR_ID_31069_CONESTOGA_US,
+ OPERATOR_ID_31074_TELEMETRIX_US,
+ OPERATOR_ID_31076_PTSI_US,
+ OPERATOR_ID_31077_IOWA_WIRELESS_US,
+ OPERATOR_ID_31078_AIRLINK_PCS_US,
+ OPERATOR_ID_31079_PINPOINT_US,
+ OPERATOR_ID_31080_T_MOBILE_US,
+ OPERATOR_ID_31098_AWS_US,
+ OPERATOR_ID_31114_SPROCKET_UNKNOW,
+ OPERATOR_ID_31601_NEXTEL_UNKNOW,
+ OPERATOR_ID_33805_DIGICEL_JM,
+ OPERATOR_ID_34001_ORANGE_FW,
+ OPERATOR_ID_34020_BOUYGUES_FW,
+ OPERATOR_ID_34430_APUA_PCS_AG,
+ OPERATOR_ID_35001_TELECOM_BM,
+ OPERATOR_ID_36251_TELCELL_GSM_AN,
+ OPERATOR_ID_36801_C_COM_CU,
+ OPERATOR_ID_37001_ORANGE_DO,
+ OPERATOR_ID_40001_AZERCELL_GSM_AZ,
+ OPERATOR_ID_40002_BAKCELL_GSM_2000_AZ,
+ OPERATOR_ID_40101_K_MOBILE_KZ,
+ OPERATOR_ID_40102_K_CELL_KZ,
+ OPERATOR_ID_40401_HUTCH_IN,
+ OPERATOR_ID_40402_AIRTEL_IN,
+ OPERATOR_ID_40403_AIRTEL_IN,
+ OPERATOR_ID_40404_IDEA_IN,
+ OPERATOR_ID_40405_HUTCH_IN,
+ OPERATOR_ID_40407_IDEA_IN,
+ OPERATOR_ID_40409_RELIANCE_IN,
+ OPERATOR_ID_40410_AIRTEL_IN,
+ OPERATOR_ID_40411_HUTCH_IN,
+ OPERATOR_ID_40412_IDEA_IN,
+ OPERATOR_ID_40413_HUTCH_IN,
+ OPERATOR_ID_40414_SPICE_IN,
+ OPERATOR_ID_40415_HUTCH_IN,
+ OPERATOR_ID_40416_AIRTEL_IN,
+ OPERATOR_ID_40418_RELIANCE_IN,
+ OPERATOR_ID_40419_IDEA_IN,
+ OPERATOR_ID_40420_HUTCH_IN,
+ OPERATOR_ID_40421_BPL_MOBILE_IN,
+ OPERATOR_ID_40422_IDEA_IN,
+ OPERATOR_ID_40424_IDEA_IN,
+ OPERATOR_ID_40427_HUTCH_IN,
+ OPERATOR_ID_40429_AIRCEL_IN,
+ OPERATOR_ID_40430_HUTCH_IN,
+ OPERATOR_ID_40431_AIRTEL_IN,
+ OPERATOR_ID_40434_CELLONE_IN,
+ OPERATOR_ID_40436_RELIANCE_IN,
+ OPERATOR_ID_40437_AIRCEL_IN,
+ OPERATOR_ID_40438_CELLONE_IN,
+ OPERATOR_ID_40440_AIRTEL_IN,
+ OPERATOR_ID_40441_RPG_IN,
+ OPERATOR_ID_40443_HUTCH_IN,
+ OPERATOR_ID_40444_SPICE_IN,
+ OPERATOR_ID_40445_AIRTEL_IN,
+ OPERATOR_ID_40446_HUTCH_IN,
+ OPERATOR_ID_40449_AIRTEL_IN,
+ OPERATOR_ID_40450_RELIANCE_IN,
+ OPERATOR_ID_40451_CELLONE_IN,
+ OPERATOR_ID_40452_RELIANCE_IN,
+ OPERATOR_ID_40453_CELLONE_IN,
+ OPERATOR_ID_40454_CELLONE_IN,
+ OPERATOR_ID_40455_CELLONE_IN,
+ OPERATOR_ID_40456_IDEA_IN,
+ OPERATOR_ID_40457_CELLONE_IN,
+ OPERATOR_ID_40458_CELLONE_IN,
+ OPERATOR_ID_40459_CELLONE_IN,
+ OPERATOR_ID_40460_HUTCH_IN,
+ OPERATOR_ID_40462_CELLONE_IN,
+ OPERATOR_ID_40464_CELLONE_IN,
+ OPERATOR_ID_40466_CELLONE_IN,
+ OPERATOR_ID_40467_RELIANCE_IN,
+ OPERATOR_ID_40468_DOLPHIN_IN,
+ OPERATOR_ID_40469_MTNL_IN,
+ OPERATOR_ID_40470_AIRTEL_IN,
+ OPERATOR_ID_40471_CELLONE_IN,
+ OPERATOR_ID_40472_CELLONE_IN,
+ OPERATOR_ID_40473_CELLONE_IN,
+ OPERATOR_ID_40474_CELLONE_IN,
+ OPERATOR_ID_40475_CELLONE_IN,
+ OPERATOR_ID_40476_CELLONE_IN,
+ OPERATOR_ID_40477_CELLONE_IN,
+ OPERATOR_ID_40478_IDEA_IN,
+ OPERATOR_ID_40479_CELLONE_IN,
+ OPERATOR_ID_40480_CELLONE_IN,
+ OPERATOR_ID_40481_CELLONE_IN,
+ OPERATOR_ID_40482_IDEA_IN,
+ OPERATOR_ID_40483_RELIANCE_IN,
+ OPERATOR_ID_40484_HUTCH_IN,
+ OPERATOR_ID_40485_RELIANCE_IN,
+ OPERATOR_ID_40486_HUTCH_IN,
+ OPERATOR_ID_40487_IDEA_IN,
+ OPERATOR_ID_40488_HUTCH_IN,
+ OPERATOR_ID_40489_IDEA_IN,
+ OPERATOR_ID_40490_AIRTEL_IN,
+ OPERATOR_ID_40492_AIRTEL_IN,
+ OPERATOR_ID_40493_AIRTEL_IN,
+ OPERATOR_ID_40494_AIRTEL_IN,
+ OPERATOR_ID_40495_AIRTEL_IN,
+ OPERATOR_ID_40496_AIRTEL_IN,
+ OPERATOR_ID_40497_AIRTEL_IN,
+ OPERATOR_ID_40498_AIRTEL_IN,
+ OPERATOR_ID_40551_AIRTEL_IN,
+ OPERATOR_ID_40552_AIRTEL_IN,
+ OPERATOR_ID_40553_AIRTEL_IN,
+ OPERATOR_ID_40554_AIRTEL_IN,
+ OPERATOR_ID_40555_AIRTEL_IN,
+ OPERATOR_ID_40556_AIRTEL_IN,
+ OPERATOR_ID_40566_HUTCH_IN,
+ OPERATOR_ID_40567_HUTCH_IN_,
+ OPERATOR_ID_41001_MOBILINK_PK,
+ OPERATOR_ID_41302_DIALOG_LK,
+ OPERATOR_ID_41303_CELLTEL_LK,
+ OPERATOR_ID_41401_MM_900_MM,
+ OPERATOR_ID_41501_CELLIS_LB,
+ OPERATOR_ID_41503_LIBANCELL_LB,
+ OPERATOR_ID_41601_FASTLINK_JO,
+ OPERATOR_ID_41677_MOBILECOM_JO,
+ OPERATOR_ID_41702_SPACETEL_SY,
+ OPERATOR_ID_41709_MOBILE_SYRIA_SY,
+ OPERATOR_ID_41902_MTCNET_KW,
+ OPERATOR_ID_41903_WATANIYA_KW,
+ OPERATOR_ID_42001_AL_JAWAL_SA,
+ OPERATOR_ID_42007_EAE_SA,
+ OPERATOR_ID_42102_SPACETEL_YE,
+ OPERATOR_ID_42202_OMAN_MOBILE_OM,
+ OPERATOR_ID_42402_ETISALAT_AE,
+ OPERATOR_ID_42501_ORANGE_IL,
+ OPERATOR_ID_42505_JAWWAL_IL,
+ OPERATOR_ID_42601_MOBILE_PLUS_BH,
+ OPERATOR_ID_42701_QATARNET_QA,
+ OPERATOR_ID_42899_MOBICOM_MN,
+ OPERATOR_ID_42901_NTC_NP,
+ OPERATOR_ID_43211_TCI_IR,
+ OPERATOR_ID_43214_KISH_IR,
+ OPERATOR_ID_43401_BUZTEL_UZ,
+ OPERATOR_ID_43402_UZMACOM_UZ,
+ OPERATOR_ID_43404_UZB_DAEWOO_GSM_UZ,
+ OPERATOR_ID_43405_COSCOM_UZ,
+ OPERATOR_ID_43701_BITEL_KG,
+ OPERATOR_ID_43801_BCTI_TM,
+ OPERATOR_ID_45201_MOBIFONE_VN,
+ OPERATOR_ID_45202_VINAFONE_VN,
+ OPERATOR_ID_45400_CSL_HK,
+ OPERATOR_ID_45401_NEW_WORLD_HK,
+ OPERATOR_ID_45402_CSL_HK,
+ OPERATOR_ID_45404_ORANGE_HK,
+ OPERATOR_ID_45406_SMC_HK,
+ OPERATOR_ID_45410_NEW_WORLD_HK,
+ OPERATOR_ID_45412_PEOPLES_HK,
+ OPERATOR_ID_45416_SUNDAY_HK,
+ OPERATOR_ID_45418_HK_TELECOM_HK,
+ OPERATOR_ID_45500_SMARTONE_UNKNOW,
+ OPERATOR_ID_45501_CTMGSM_UNKNOW,
+ OPERATOR_ID_45503_HT_MACAU_UNKNOW,
+ OPERATOR_ID_45601_MOBITEL_KH,
+ OPERATOR_ID_45602_SAMART_GSM_KH,
+ OPERATOR_ID_45701_LAO_GSM_LA,
+ OPERATOR_ID_46000_CHINA_MOBILE_CN,
+ OPERATOR_ID_46001_CHN_CUGSM_CN,
+ OPERATOR_ID_46002_CHINA_MOBILE_CN,
+ OPERATOR_ID_46601_FAR_EASTONE_TW,
+ OPERATOR_ID_46606_TUNTEX_TW,
+ OPERATOR_ID_46668_ACES_TW,
+ OPERATOR_ID_46688_KGT_TW,
+ OPERATOR_ID_46692_CHUNGHWA_TW,
+ OPERATOR_ID_46693_MOBITAI_TW,
+ OPERATOR_ID_46697_TWN_GSM_TW,
+ OPERATOR_ID_46699_TRANSASIA_TW,
+ OPERATOR_ID_47001_GRAMEEMPHONE_BD,
+ OPERATOR_ID_47002_AKTEL_BD,
+ OPERATOR_ID_47003_SHEBAWORLD_BD,
+ OPERATOR_ID_47019_MOBILE_2000_BD,
+ OPERATOR_ID_47201_DHIMOBILE_MV,
+ OPERATOR_ID_50212_MAXIS_MOBILE_MY,
+ OPERATOR_ID_50213_TM_TOUCH_MY,
+ OPERATOR_ID_50216_DIGI_MY,
+ OPERATOR_ID_50217_ADAM_MY,
+ OPERATOR_ID_50219_CELCOM_MY,
+ OPERATOR_ID_50501_MOBILENET_AU,
+ OPERATOR_ID_50502_OPTUS_AU,
+ OPERATOR_ID_50503_VODAFONE_AU,
+ OPERATOR_ID_50508_ONE_TEL_AU,
+ OPERATOR_ID_51000_ACES_ID,
+ OPERATOR_ID_51001_SATELINDOCEL_ID,
+ OPERATOR_ID_51008_LIPPO_TEL_ID,
+ OPERATOR_ID_51010_TELKOMSEL_ID,
+ OPERATOR_ID_51011_GSM_XL_ID,
+ OPERATOR_ID_51021_INDOSAT_ID,
+ OPERATOR_ID_51501_ISLACOM_PH,
+ OPERATOR_ID_51502_GLOBE_PH,
+ OPERATOR_ID_51503_SMART_PH,
+ OPERATOR_ID_51505_DIGITEL_PH,
+ OPERATOR_ID_51511_ACES_PH,
+ OPERATOR_ID_52001_AIS_GSM_TH,
+ OPERATOR_ID_52015_ACT_MOBILE_TH,
+ OPERATOR_ID_52018_WP_1800_TH,
+ OPERATOR_ID_52020_ACES_TH,
+ OPERATOR_ID_52023_HELLO_TH,
+ OPERATOR_ID_52099_ORANGE_TH,
+ OPERATOR_ID_52501_ST_GSM_SGP_SG,
+ OPERATOR_ID_52502_ST_GSM1800_SGP_SG,
+ OPERATOR_ID_52503_M1_GSM_SGP_SG,
+ OPERATOR_ID_52504_SGP_M1_3GSM_SG,
+ OPERATOR_ID_52505_STARHUB_SGP_SG,
+ OPERATOR_ID_52811_BRU_TSTCOM_BN,
+ OPERATOR_ID_53001_VODAFONE_NZ,
+ OPERATOR_ID_53901_TONGA_COMM_TO,
+ OPERATOR_ID_54100_ACES_VU,
+ OPERATOR_ID_54101_SMILE_VU,
+ OPERATOR_ID_54201_VODAFONE_FJ,
+ OPERATOR_ID_54411_BLUE_SKY_AS,
+ OPERATOR_ID_54601_MOBILIS_NC,
+ OPERATOR_ID_54720_VINI_PF,
+ OPERATOR_ID_55001_FSM_FM,
+ OPERATOR_ID_60201_MOBINIL_EG,
+ OPERATOR_ID_60202_CLICK_GSM_EG,
+ OPERATOR_ID_60301_AMN_DZ,
+ OPERATOR_ID_60400_MEDITEL_MA,
+ OPERATOR_ID_60401_IAM_MA,
+ OPERATOR_ID_60502_TUNICELL_TN,
+ OPERATOR_ID_60801_ALIZE_SN,
+ OPERATOR_ID_60802_SENTEL_SN,
+ OPERATOR_ID_61001_MALITEL_ML,
+ OPERATOR_ID_61101_MOBILIS_GN,
+ OPERATOR_ID_61102_LAGUI_GN,
+ OPERATOR_ID_61201_CORA_CI,
+ OPERATOR_ID_61203_IVOIRIS_CI,
+ OPERATOR_ID_61205_TELECEL_CI,
+ OPERATOR_ID_61302_CELTEL_BF,
+ OPERATOR_ID_61402_CELTEL_NE,
+ OPERATOR_ID_61501_TOGOCEL_TG,
+ OPERATOR_ID_61601_LIBERCOM_BJ,
+ OPERATOR_ID_61602_TELECEL_BENIN_BJ,
+ OPERATOR_ID_61603_BENINCELL_BJ,
+ OPERATOR_ID_61701_CELLPLUS_MU,
+ OPERATOR_ID_61710_EMTEL_MU,
+ OPERATOR_ID_61801_OMEGA_LR,
+ OPERATOR_ID_62001_SPACEFON_GH,
+ OPERATOR_ID_62002_ONETOUCH_GH,
+ OPERATOR_ID_62003_MOBITEL_GH,
+ OPERATOR_ID_62100_MTN_NG,
+ OPERATOR_ID_62120_ECONET_NG,
+ OPERATOR_ID_62130_MTN_NG,
+ OPERATOR_ID_62140_NITEL_GSM_NG,
+ OPERATOR_ID_62201_CELTEL_TD,
+ OPERATOR_ID_62202_LIBERTIS_TD,
+ OPERATOR_ID_62401_MTN_CAM_CM,
+ OPERATOR_ID_62402_MOBILIS_CM,
+ OPERATOR_ID_62501_CPV_MOVEL_CV,
+ OPERATOR_ID_62801_LIBERTIS_GA,
+ OPERATOR_ID_62802_GO_CELTEL_GA,
+ OPERATOR_ID_62803_CELTEL_GA,
+ OPERATOR_ID_62901_CELTEL_CG,
+ OPERATOR_ID_62910_LIBERTIS_CG,
+ OPERATOR_ID_63001_CELLNET_CD,
+ OPERATOR_ID_63002_CELTEL_CD,
+ OPERATOR_ID_63004_CELLCO_CD,
+ OPERATOR_ID_63089_OASIS_CD,
+ OPERATOR_ID_63301_SEYCEL_SC,
+ OPERATOR_ID_63310_AIRTEL_SC,
+ OPERATOR_ID_63401_MOBITEL_MZ,
+ OPERATOR_ID_63510_RWANDACELL_RW,
+ OPERATOR_ID_63601_ETMTN_ET,
+ OPERATOR_ID_63701_BARAKAAT_SO,
+ OPERATOR_ID_63902_SAFARICOM_KE,
+ OPERATOR_ID_63903_KENCELL_KE,
+ OPERATOR_ID_64001_TRITEL_TZ,
+ OPERATOR_ID_64002_MOBITEL_TZ,
+ OPERATOR_ID_64003_ZANTEL_TZ,
+ OPERATOR_ID_64004_VODACOM_TZ,
+ OPERATOR_ID_64005_CELTEL_TZ,
+ OPERATOR_ID_64101_CELTEL_UG,
+ OPERATOR_ID_64110_MTN_UGANDA_UG,
+ OPERATOR_ID_64111_UTL_TELECEL_UG,
+ OPERATOR_ID_64201_SPACETEL_BI,
+ OPERATOR_ID_64202_SAFARIS_BI,
+ OPERATOR_ID_64301_MCEL_UNKNOW,
+ OPERATOR_ID_64501_ZAMCELL_UNKNOW,
+ OPERATOR_ID_64502_TELECEL_UNKNOW,
+ OPERATOR_ID_64601_MADACOM_MG,
+ OPERATOR_ID_64602_ANTARIS_MG,
+ OPERATOR_ID_64700_ORANGE_REUNION_RE,
+ OPERATOR_ID_64710_SFR_REUNION_RE,
+ OPERATOR_ID_64801_NET_ONE_ZW,
+ OPERATOR_ID_64803_TELECEL_ZW,
+ OPERATOR_ID_64804_ECONET_ZW,
+ OPERATOR_ID_64901_MTC_NA,
+ OPERATOR_ID_65001_CALLPOINT_90_MW,
+ OPERATOR_ID_65010_CELTEL_MW,
+ OPERATOR_ID_65101_VODACOM_LS,
+ OPERATOR_ID_65201_MASCOM_BW,
+ OPERATOR_ID_65202_VISTA_BW,
+ OPERATOR_ID_65310_SWAZIMTN_SZ,
+ OPERATOR_ID_65501_VODACOM_ZA,
+ OPERATOR_ID_65507_CELL_C_PTY_LTD_ZA,
+ OPERATOR_ID_65510_MTN_ZA,
+ OPERATOR_ID_70601_PERSONAL_SV,
+ OPERATOR_ID_70602_DIGICEL_SV,
+ OPERATOR_ID_71610_TIM_PE,
+ OPERATOR_ID_72207_UNIFON_AR,
+ OPERATOR_ID_72234_TELECOM_PERSONAL_AR,
+ OPERATOR_ID_72235_PORT_HABLE_AR,
+ OPERATOR_ID_72402_TIM_BRASIL_BR,
+ OPERATOR_ID_72403_TIM_BRASIL_BR,
+ OPERATOR_ID_72404_TIM_BRASIL_BR,
+ OPERATOR_ID_72405_CLARO_BR,
+ OPERATOR_ID_72416_BRTCEL_BR,
+ OPERATOR_ID_73001_ENTEL_PCS_CL,
+ OPERATOR_ID_73010_ENTEL_PCS_CL,
+ OPERATOR_ID_73401_INFONET_VE,
+ OPERATOR_ID_73402_DIGITEL_VE,
+ OPERATOR_ID_73601_NUEVATEL_BO,
+ OPERATOR_ID_73602_ENTEL_BO,
+ OPERATOR_ID_74401_VOX_PY,
+ OPERATOR_ID_74402_PY_02_PY,
+ OPERATOR_ID_74601_ICMS_SR,
+ OPERATOR_ID_74605_THURAYA_UNKNOW,
+ OPERATOR_ID_NUMS,
+
+};
+
+
+static struct operator_id_name area_operator_id_name[OPERATOR_ID_NUMS] = {
+ {DEVICE_TYPE_OPERATOR, 20000, "no", "no"},
+ {DEVICE_TYPE_OPERATOR, 20201, "Cosmote", "GR"},
+ {DEVICE_TYPE_OPERATOR, 20205, "Vodafone GR", "GR"},
+ {DEVICE_TYPE_OPERATOR, 20210, "TELESTET", "GR"},
+ {DEVICE_TYPE_OPERATOR, 20404, "Vodafone NL", "NL"},
+ {DEVICE_TYPE_OPERATOR, 20408, "KPN", "NL"},
+ {DEVICE_TYPE_OPERATOR, 20412, "O2 - NL", "NL"},
+ {DEVICE_TYPE_OPERATOR, 20416, "Ben", "NL"},
+ {DEVICE_TYPE_OPERATOR, 20420, "dutchtone", "NL"},
+ {DEVICE_TYPE_OPERATOR, 20601, "Proximus", "BE"},
+ {DEVICE_TYPE_OPERATOR, 20610, "Mobistar", "BE"},
+ {DEVICE_TYPE_OPERATOR, 20620, "Orange", "BE"},
+ {DEVICE_TYPE_OPERATOR, 20801, "Orange", "FR"},
+ {DEVICE_TYPE_OPERATOR, 20810, "SFR", "FR"},
+ {DEVICE_TYPE_OPERATOR, 20820, "BOUYGTEL", "FR"},
+ {DEVICE_TYPE_OPERATOR, 21303, "Mobiland", "AD"},
+ {DEVICE_TYPE_OPERATOR, 21401, "Vodafone E", "ES"},
+ {DEVICE_TYPE_OPERATOR, 21402, "MoviStar", "ES"},
+ {DEVICE_TYPE_OPERATOR, 21403, "AMENA", "ES"},
+ {DEVICE_TYPE_OPERATOR, 21404, "Xfera", "ES"},
+ {DEVICE_TYPE_OPERATOR, 21407, "MoviStar", "ES"},
+ {DEVICE_TYPE_OPERATOR, 21601, "Pannon GSM", "HU"},
+ {DEVICE_TYPE_OPERATOR, 21630, "Westel", "HU"},
+ {DEVICE_TYPE_OPERATOR, 21670, "Vodafone", "HU"},
+ {DEVICE_TYPE_OPERATOR, 21803, "ERONET", "BA"},
+ {DEVICE_TYPE_OPERATOR, 21805, "Mobilna Srpska", "BA"},
+ {DEVICE_TYPE_OPERATOR, 21890, "GSM BiH", "BA"},
+ {DEVICE_TYPE_OPERATOR, 21901, "CRONET", "HR"},
+ {DEVICE_TYPE_OPERATOR, 21910, "VIP", "HR"},
+ {DEVICE_TYPE_OPERATOR, 22001, "MOBTEL", "YU"},
+ {DEVICE_TYPE_OPERATOR, 22002, "ProMonte", "YU"},
+ {DEVICE_TYPE_OPERATOR, 22003, "Telekom Srbija", "YU"},
+ {DEVICE_TYPE_OPERATOR, 22004, "MONET", "YU"},
+ {DEVICE_TYPE_OPERATOR, 22201, "TIM", "IT"},
+ {DEVICE_TYPE_OPERATOR, 22210, "Vodafone IT", "IT"},
+ {DEVICE_TYPE_OPERATOR, 22288, "WIND", "IT"},
+ {DEVICE_TYPE_OPERATOR, 22298, "Blu SpA", "IT"},
+ {DEVICE_TYPE_OPERATOR, 22601, "CONNEX", "RO"},
+ {DEVICE_TYPE_OPERATOR, 22603, "Cosmorom", "RO"},
+ {DEVICE_TYPE_OPERATOR, 22610, "dialog", "RO"},
+ {DEVICE_TYPE_OPERATOR, 22801, "Swiss GSM", "CH"},
+ {DEVICE_TYPE_OPERATOR, 22802, "sunrise", "CH"},
+ {DEVICE_TYPE_OPERATOR, 22803, "Orange", "CH"},
+ {DEVICE_TYPE_OPERATOR, 23001, "PAEGAS", "CZ"},
+ {DEVICE_TYPE_OPERATOR, 23002, "EUROTEL", "CZ"},
+ {DEVICE_TYPE_OPERATOR, 23003, "OSKAR", "CZ"},
+ {DEVICE_TYPE_OPERATOR, 23101, "GLOBTEL", "SK"},
+ {DEVICE_TYPE_OPERATOR, 23102, "EUROTEL", "SK"},
+ {DEVICE_TYPE_OPERATOR, 23201, "A1", "AT"},
+ {DEVICE_TYPE_OPERATOR, 23203, "T-Mobile", "AT"},
+ {DEVICE_TYPE_OPERATOR, 23205, "ONE", "AT"},
+ {DEVICE_TYPE_OPERATOR, 23207, "tele.ring", "AT"},
+ {DEVICE_TYPE_OPERATOR, 23410, "O2 - UK", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23415, "Vodafone", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23430, "T-Mobile UK", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23431, "T-Mobile UK", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23432, "T-Mobile UK", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23433, "Orange", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23450, "JT GSM", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23455, "GUERNSEY TEL", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23458, "MANX", "GB"},
+ {DEVICE_TYPE_OPERATOR, 23801, "TDK-MOBIL", "DK"},
+ {DEVICE_TYPE_OPERATOR, 23802, "SONOFON", "DK"},
+ {DEVICE_TYPE_OPERATOR, 23820, "Telia", "DK"},
+ {DEVICE_TYPE_OPERATOR, 23830, "Orange", "DK"},
+ {DEVICE_TYPE_OPERATOR, 24001, "Telia S", "SE"},
+ {DEVICE_TYPE_OPERATOR, 24007, "IQ", "SE"},
+ {DEVICE_TYPE_OPERATOR, 24008, "Vodafone", "SE"},
+ {DEVICE_TYPE_OPERATOR, 24201, "TELENOR", "NO"},
+ {DEVICE_TYPE_OPERATOR, 24202, "NetCom", "NO"},
+ {DEVICE_TYPE_OPERATOR, 24403, "Telia", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24405, "RADIOLINJA", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24409, "FINNET", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24412, "2G", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24414, "AMT", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24491, "SONERA", "FI"},
+ {DEVICE_TYPE_OPERATOR, 24601, "OMNITEL", "LT"},
+ {DEVICE_TYPE_OPERATOR, 24602, "Bite GSM", "LT"},
+ {DEVICE_TYPE_OPERATOR, 24603, "TELE2", "LT"},
+ {DEVICE_TYPE_OPERATOR, 24701, "LMT GSM", "LV"},
+ {DEVICE_TYPE_OPERATOR, 24702, "BALTCOM", "LV"},
+ {DEVICE_TYPE_OPERATOR, 24801, "EMT GSM", "EE"},
+ {DEVICE_TYPE_OPERATOR, 24802, "RLE", "EE"},
+ {DEVICE_TYPE_OPERATOR, 24803, "Q GSM", "EE"},
+ {DEVICE_TYPE_OPERATOR, 25001, "MTS", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25002, "NorthWest GSM", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25003, "NCC", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25005, "SCS", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25007, "SMARTS", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25010, "DTC", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25011, "Orensot", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25012, "Far East", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25013, "Kuban GSM", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25016, "NTC", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25017, "Ermak RMS", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25028, "EXTEL", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25039, "Uraltel", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25044, "NC-GSM", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25091, "Sonic Duo", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25092, "Primtel", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25093, "JSC Telecom XXI", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25099, "Bee Line", "RU"},
+ {DEVICE_TYPE_OPERATOR, 25501, "UMC", "UA"},
+ {DEVICE_TYPE_OPERATOR, 25502, "WellCOM", "UA"},
+ {DEVICE_TYPE_OPERATOR, 25503, "Kyivstar", "UA"},
+ {DEVICE_TYPE_OPERATOR, 25505, "Golden Telecom", "UA"},
+ {DEVICE_TYPE_OPERATOR, 25701, "VELCOM", "BY"},
+ {DEVICE_TYPE_OPERATOR, 25901, "VOXTEL", "MD"},
+ {DEVICE_TYPE_OPERATOR, 25902, "MOLDCELL", "MD"},
+ {DEVICE_TYPE_OPERATOR, 26001, "Plus GSM", "PL"},
+ {DEVICE_TYPE_OPERATOR, 26002, "Era GSM", "PL"},
+ {DEVICE_TYPE_OPERATOR, 26003, "IDEA", "PL"},
+ {DEVICE_TYPE_OPERATOR, 26201, "T-Mobile", "DE"},
+ {DEVICE_TYPE_OPERATOR, 26202, "Vodafone D2", "DE"},
+ {DEVICE_TYPE_OPERATOR, 26203, "E-Plus", "DE"},
+ {DEVICE_TYPE_OPERATOR, 26207, "O2 - DE", "DE"},
+ {DEVICE_TYPE_OPERATOR, 26213, "Mobilcom", "DE"},
+ {DEVICE_TYPE_OPERATOR, 26601, "GIBTEL", "GI"},
+ {DEVICE_TYPE_OPERATOR, 26801, "Vodafone", "PT"},
+ {DEVICE_TYPE_OPERATOR, 26803, "OPTIMUS", "PT"},
+ {DEVICE_TYPE_OPERATOR, 26806, "TMN", "PT"},
+ {DEVICE_TYPE_OPERATOR, 27001, "LUXGSM", "LU"},
+ {DEVICE_TYPE_OPERATOR, 27077, "TANGO", "LU"},
+ {DEVICE_TYPE_OPERATOR, 27201, "Vodafone IRL", "IE"},
+ {DEVICE_TYPE_OPERATOR, 27202, "O2 - IRL", "IE"},
+ {DEVICE_TYPE_OPERATOR, 27203, "METEOR", "IE"},
+ {DEVICE_TYPE_OPERATOR, 27401, "SIMINN", "IS"},
+ {DEVICE_TYPE_OPERATOR, 27402, "TAL", "IS"},
+ {DEVICE_TYPE_OPERATOR, 27404, "Viking", "IS"},
+ {DEVICE_TYPE_OPERATOR, 27601, "AMC", "AL"},
+ {DEVICE_TYPE_OPERATOR, 27602, "Vodafone", "AL"},
+ {DEVICE_TYPE_OPERATOR, 27801, "Vodafone Malta", "MT"},
+ {DEVICE_TYPE_OPERATOR, 27821, "go mobile", "MT"},
+ {DEVICE_TYPE_OPERATOR, 28001, "CYTAGSM", "CY"},
+ {DEVICE_TYPE_OPERATOR, 28201, "GEOCELL", "GE"},
+ {DEVICE_TYPE_OPERATOR, 28202, "Magti GSM", "GE"},
+ {DEVICE_TYPE_OPERATOR, 28203, "GEO 03", "GE"},
+ {DEVICE_TYPE_OPERATOR, 28301, "ARMGSM", "AM"},
+ {DEVICE_TYPE_OPERATOR, 28401, "M-TEL GSM", "BG"},
+ {DEVICE_TYPE_OPERATOR, 28601, "TURKCELL", "TR"},
+ {DEVICE_TYPE_OPERATOR, 28602, "TELSIM", "TR"},
+ {DEVICE_TYPE_OPERATOR, 28603, "ARIA", "TR"},
+ {DEVICE_TYPE_OPERATOR, 28604, "AYCELL", "TR"},
+ {DEVICE_TYPE_OPERATOR, 28801, "FT GSM", "FO"},
+ {DEVICE_TYPE_OPERATOR, 29001, "TELE Greenland", "GR"},
+ {DEVICE_TYPE_OPERATOR, 29340, "SI.MOBIL", "SI"},
+ {DEVICE_TYPE_OPERATOR, 29341, "MOBITEL", "SI"},
+ {DEVICE_TYPE_OPERATOR, 29401, "MOBIMAK", "MK"},
+ {DEVICE_TYPE_OPERATOR, 29501, "TELECOM", "LI"},
+ {DEVICE_TYPE_OPERATOR, 29502, "MONTEL", "LI"},
+ {DEVICE_TYPE_OPERATOR, 29505, "FL1", "LI"},
+ {DEVICE_TYPE_OPERATOR, 29577, "LI TANGO", "LI"},
+ {DEVICE_TYPE_OPERATOR, 30237, "Microcell", "CA"},
+ {DEVICE_TYPE_OPERATOR, 30272, "Rogers AT&T", "CA"},
+ {DEVICE_TYPE_OPERATOR, 31001, "Cellnet", "US"},
+ {DEVICE_TYPE_OPERATOR, 31011, "Wireless 2000", "US"},
+ {DEVICE_TYPE_OPERATOR, 31015, "Cingular", "US"},
+ {DEVICE_TYPE_OPERATOR, 31016, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31017, "Cingular", "US"},
+ {DEVICE_TYPE_OPERATOR, 31018, "Cingular", "US"},
+ {DEVICE_TYPE_OPERATOR, 31020, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31021, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31022, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31023, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31024, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31025, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31026, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31027, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31031, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31034, "WestLink", "US"},
+ {DEVICE_TYPE_OPERATOR, 31035, "Carolina", "US"},
+ {DEVICE_TYPE_OPERATOR, 31038, "AT&T Wireless", "US"},
+ {DEVICE_TYPE_OPERATOR, 31041, "Cingular", "US"},
+ {DEVICE_TYPE_OPERATOR, 31046, "TMP Corp", "US"},
+ {DEVICE_TYPE_OPERATOR, 31058, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31061, "Epic Touch", "US"},
+ {DEVICE_TYPE_OPERATOR, 31063, "AmeriLink", "US"},
+ {DEVICE_TYPE_OPERATOR, 31064, "Einstein PCS", "US"},
+ {DEVICE_TYPE_OPERATOR, 31066, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31067, "Wireless 2000", "US"},
+ {DEVICE_TYPE_OPERATOR, 31068, "NPI Wireless", "US"},
+ {DEVICE_TYPE_OPERATOR, 31069, "Conestoga", "US"},
+ {DEVICE_TYPE_OPERATOR, 31074, "Telemetrix", "US"},
+ {DEVICE_TYPE_OPERATOR, 31076, "PTSI", "US"},
+ {DEVICE_TYPE_OPERATOR, 31077, "Iowa Wireless", "US"},
+ {DEVICE_TYPE_OPERATOR, 31078, "Airlink PCS", "US"},
+ {DEVICE_TYPE_OPERATOR, 31079, "PinPoint", "US"},
+ {DEVICE_TYPE_OPERATOR, 31080, "T-Mobile", "US"},
+ {DEVICE_TYPE_OPERATOR, 31098, "AWS", "US"},
+ {DEVICE_TYPE_OPERATOR, 31114, "Sprocket", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 31601, "Nextel", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 33805, "Digicel", "JM"},
+ {DEVICE_TYPE_OPERATOR, 34001, "Orange ", "FW"},
+ {DEVICE_TYPE_OPERATOR, 34020, "Bouygues", "FW"},
+ {DEVICE_TYPE_OPERATOR, 34430, "APUA PCS", "AG"},
+ {DEVICE_TYPE_OPERATOR, 35001, "Telecom", "BM"},
+ {DEVICE_TYPE_OPERATOR, 36251, "Telcell GSM", "AN"},
+ {DEVICE_TYPE_OPERATOR, 36801, "C_Com", "CU"},
+ {DEVICE_TYPE_OPERATOR, 37001, "Orange", "DO"},
+ {DEVICE_TYPE_OPERATOR, 40001, "AZERCELL GSM", "AZ"},
+ {DEVICE_TYPE_OPERATOR, 40002, "BAKCELL GSM 2000", "AZ"},
+ {DEVICE_TYPE_OPERATOR, 40101, "K-MOBILE", "KZ"},
+ {DEVICE_TYPE_OPERATOR, 40102, "K'CELL", "KZ"},
+ {DEVICE_TYPE_OPERATOR, 40401, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40402, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40403, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40404, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40405, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40407, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40409, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40410, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40411, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40412, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40413, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40414, "Spice", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40415, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40416, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40418, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40419, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40420, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40421, "BPL Mobile", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40422, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40424, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40427, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40429, "Aircel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40430, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40431, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40434, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40436, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40437, "Aircel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40438, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40440, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40441, "RPG", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40443, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40444, "Spice", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40445, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40446, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40449, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40450, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40451, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40452, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40453, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40454, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40455, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40456, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40457, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40458, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40459, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40460, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40462, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40464, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40466, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40467, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40468, "DOLPHIN", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40469, "MTNL", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40470, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40471, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40472, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40473, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40474, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40475, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40476, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40477, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40478, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40479, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40480, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40481, "Cellone", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40482, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40483, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40484, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40485, "Reliance", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40486, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40487, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40488, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40489, "IDEA", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40490, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40492, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40493, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40494, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40495, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40496, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40497, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40498, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40551, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40552, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40553, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40554, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40555, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40556, "Airtel", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40566, "Hutch", "IN"},
+ {DEVICE_TYPE_OPERATOR, 40567, "Hutch", "IN" },
+ {DEVICE_TYPE_OPERATOR, 41001, "Mobilink", "PK"},
+ {DEVICE_TYPE_OPERATOR, 41302, "DIALOG", "LK"},
+ {DEVICE_TYPE_OPERATOR, 41303, "CELLTEL", "LK"},
+ {DEVICE_TYPE_OPERATOR, 41401, "MM 900", "MM"},
+ {DEVICE_TYPE_OPERATOR, 41501, "Cellis", "LB"},
+ {DEVICE_TYPE_OPERATOR, 41503, "LibanCell", "LB"},
+ {DEVICE_TYPE_OPERATOR, 41601, "Fastlink", "JO"},
+ {DEVICE_TYPE_OPERATOR, 41677, "MobileCom", "JO"},
+ {DEVICE_TYPE_OPERATOR, 41702, "Spacetel", "SY"},
+ {DEVICE_TYPE_OPERATOR, 41709, "MOBILE SYRIA", "SY"},
+ {DEVICE_TYPE_OPERATOR, 41902, "MTCNet", "KW"},
+ {DEVICE_TYPE_OPERATOR, 41903, "WATANIYA", "KW"},
+ {DEVICE_TYPE_OPERATOR, 42001, "Al-Jawal", "SA"},
+ {DEVICE_TYPE_OPERATOR, 42007, "EAE", "SA"},
+ {DEVICE_TYPE_OPERATOR, 42102, "Spacetel", "YE"},
+ {DEVICE_TYPE_OPERATOR, 42202, "OMAN MOBILE", "OM"},
+ {DEVICE_TYPE_OPERATOR, 42402, "ETISALAT", "AE"},
+ {DEVICE_TYPE_OPERATOR, 42501, "Orange", "IL"},
+ {DEVICE_TYPE_OPERATOR, 42505, "JAWWAL", "IL"},
+ {DEVICE_TYPE_OPERATOR, 42601, "MOBILE PLUS", "BH"},
+ {DEVICE_TYPE_OPERATOR, 42701, "QATARNET", "QA"},
+ {DEVICE_TYPE_OPERATOR, 42899, "MobiCom", "MN"},
+ {DEVICE_TYPE_OPERATOR, 42901, "NTC", "NP"},
+ {DEVICE_TYPE_OPERATOR, 43211, "TCI", "IR"},
+ {DEVICE_TYPE_OPERATOR, 43214, "KISH", "IR"},
+ {DEVICE_TYPE_OPERATOR, 43401, "Buztel", "UZ"},
+ {DEVICE_TYPE_OPERATOR, 43402, "Uzmacom", "UZ"},
+ {DEVICE_TYPE_OPERATOR, 43404, "UZB DAEWOO-GSM", "UZ"},
+ {DEVICE_TYPE_OPERATOR, 43405, "Coscom", "UZ"},
+ {DEVICE_TYPE_OPERATOR, 43701, "BITEL", "KG"},
+ {DEVICE_TYPE_OPERATOR, 43801, "BCTI", "TM"},
+ {DEVICE_TYPE_OPERATOR, 45201, "MOBIFONE", "VN"},
+ {DEVICE_TYPE_OPERATOR, 45202, "VINAFONE", "VN"},
+ {DEVICE_TYPE_OPERATOR, 45400, "CSL", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45401, "NEW WORLD", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45402, "CSL", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45404, "Orange", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45406, "SMC", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45410, "NEW WORLD", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45412, "PEOPLES", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45416, "SUNDAY", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45418, "HK TELECOM", "HK"},
+ {DEVICE_TYPE_OPERATOR, 45500, "SmarTone", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 45501, "CTMGSM", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 45503, "HT Macau", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 45601, "MobiTel", "KH"},
+ {DEVICE_TYPE_OPERATOR, 45602, "SAMART-GSM", "KH"},
+ {DEVICE_TYPE_OPERATOR, 45701, "LAO GSM", "LA"},
+ {DEVICE_TYPE_OPERATOR, 46000, "CHINA MOBILE", "CN"},
+ {DEVICE_TYPE_OPERATOR, 46001, "CHN-CUGSM", "CN"},
+ {DEVICE_TYPE_OPERATOR, 46002, "CHINA MOBILE", "CN"},
+ {DEVICE_TYPE_OPERATOR, 46601, "Far EasTone", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46606, "TUNTEX", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46668, "ACeS", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46688, "KGT", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46692, "Chunghwa", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46693, "MobiTai", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46697, "TWN GSM", "TW"},
+ {DEVICE_TYPE_OPERATOR, 46699, "TransAsia", "TW"},
+ {DEVICE_TYPE_OPERATOR, 47001, "GrameemPhone", "BD"},
+ {DEVICE_TYPE_OPERATOR, 47002, "AKTEL", "BD"},
+ {DEVICE_TYPE_OPERATOR, 47003, "ShebaWorld", "BD"},
+ {DEVICE_TYPE_OPERATOR, 47019, "Mobile 2000", "BD"},
+ {DEVICE_TYPE_OPERATOR, 47201, "DHIMOBILE", "MV"},
+ {DEVICE_TYPE_OPERATOR, 50212, "Maxis Mobile", "MY"},
+ {DEVICE_TYPE_OPERATOR, 50213, "TM Touch", "MY"},
+ {DEVICE_TYPE_OPERATOR, 50216, "DiGi", "MY"},
+ {DEVICE_TYPE_OPERATOR, 50217, "ADAM", "MY"},
+ {DEVICE_TYPE_OPERATOR, 50219, "CELCOM", "MY"},
+ {DEVICE_TYPE_OPERATOR, 50501, "MobileNet", "AU"},
+ {DEVICE_TYPE_OPERATOR, 50502, "OPTUS", "AU"},
+ {DEVICE_TYPE_OPERATOR, 50503, "Vodafone", "AU"},
+ {DEVICE_TYPE_OPERATOR, 50508, "One.Tel", "AU"},
+ {DEVICE_TYPE_OPERATOR, 51000, "ACeS", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51001, "SATELINDOCEL", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51008, "LIPPO TEL", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51010, "TELKOMSEL", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51011, "GSM-XL", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51021, "INDOSAT", "ID"},
+ {DEVICE_TYPE_OPERATOR, 51501, "ISLACOM", "PH"},
+ {DEVICE_TYPE_OPERATOR, 51502, "Globe", "PH"},
+ {DEVICE_TYPE_OPERATOR, 51503, "SMART", "PH"},
+ {DEVICE_TYPE_OPERATOR, 51505, "Digitel", "PH"},
+ {DEVICE_TYPE_OPERATOR, 51511, "ACeS", "PH"},
+ {DEVICE_TYPE_OPERATOR, 52001, "AIS GSM", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52015, "ACT Mobile", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52018, "WP-1800", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52020, "ACeS", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52023, "HELLO", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52099, "Orange", "TH"},
+ {DEVICE_TYPE_OPERATOR, 52501, "ST-GSM-SGP", "SG"},
+ {DEVICE_TYPE_OPERATOR, 52502, "ST-GSM1800-SGP", "SG"},
+ {DEVICE_TYPE_OPERATOR, 52503, "M1-GSM-SGP", "SG"},
+ {DEVICE_TYPE_OPERATOR, 52504, "SGP-M1-3GSM", "SG"},
+ {DEVICE_TYPE_OPERATOR, 52505, "STARHUB-SGP", "SG"},
+ {DEVICE_TYPE_OPERATOR, 52811, "BRU TSTCom", "BN"},
+ {DEVICE_TYPE_OPERATOR, 53001, "Vodafone", "NZ"},
+ {DEVICE_TYPE_OPERATOR, 53901, "Tonga Comm.", "TO"},
+ {DEVICE_TYPE_OPERATOR, 54100, "ACeS", "VU"},
+ {DEVICE_TYPE_OPERATOR, 54101, "SMILE", "VU"},
+ {DEVICE_TYPE_OPERATOR, 54201, "Vodafone", "FJ"},
+ {DEVICE_TYPE_OPERATOR, 54411, "Blue Sky", "AS"},
+ {DEVICE_TYPE_OPERATOR, 54601, "MOBILIS", "NC"},
+ {DEVICE_TYPE_OPERATOR, 54720, "VINI", "PF"},
+ {DEVICE_TYPE_OPERATOR, 55001, "FSM", "FM"},
+ {DEVICE_TYPE_OPERATOR, 60201, "MobiNiL", "EG"},
+ {DEVICE_TYPE_OPERATOR, 60202, "CLICK GSM", "EG"},
+ {DEVICE_TYPE_OPERATOR, 60301, "AMN", "DZ"},
+ {DEVICE_TYPE_OPERATOR, 60400, "Meditel", "MA"},
+ {DEVICE_TYPE_OPERATOR, 60401, "IAM", "MA"},
+ {DEVICE_TYPE_OPERATOR, 60502, "TUNICELL", "TN"},
+ {DEVICE_TYPE_OPERATOR, 60801, "ALIZE", "SN"},
+ {DEVICE_TYPE_OPERATOR, 60802, "SENTEL", "SN"},
+ {DEVICE_TYPE_OPERATOR, 61001, "MALITEL", "ML"},
+ {DEVICE_TYPE_OPERATOR, 61101, "MOBILIS", "GN"},
+ {DEVICE_TYPE_OPERATOR, 61102, "LAGUI", "GN"},
+ {DEVICE_TYPE_OPERATOR, 61201, "CORA", "CI"},
+ {DEVICE_TYPE_OPERATOR, 61203, "Ivoiris", "CI"},
+ {DEVICE_TYPE_OPERATOR, 61205, "TELECEL", "CI"},
+ {DEVICE_TYPE_OPERATOR, 61302, "CELTEL", "BF"},
+ {DEVICE_TYPE_OPERATOR, 61402, "CELTEL", "NE"},
+ {DEVICE_TYPE_OPERATOR, 61501, "TOGOCEL", "TG"},
+ {DEVICE_TYPE_OPERATOR, 61601, "LIBERCOM", "BJ"},
+ {DEVICE_TYPE_OPERATOR, 61602, "Telecel Benin", "BJ"},
+ {DEVICE_TYPE_OPERATOR, 61603, "BENINCELL", "BJ"},
+ {DEVICE_TYPE_OPERATOR, 61701, "CELLPLUS", "MU"},
+ {DEVICE_TYPE_OPERATOR, 61710, "EMTEL", "MU"},
+ {DEVICE_TYPE_OPERATOR, 61801, "Omega", "LR"},
+ {DEVICE_TYPE_OPERATOR, 62001, "SPACEFON", "GH"},
+ {DEVICE_TYPE_OPERATOR, 62002, "ONEtouch", "GH"},
+ {DEVICE_TYPE_OPERATOR, 62003, "MOBITEL", "GH"},
+ {DEVICE_TYPE_OPERATOR, 62100, "MTN", "NG"},
+ {DEVICE_TYPE_OPERATOR, 62120, "ECONET", "NG"},
+ {DEVICE_TYPE_OPERATOR, 62130, "MTN", "NG"},
+ {DEVICE_TYPE_OPERATOR, 62140, "NITEL GSM", "NG"},
+ {DEVICE_TYPE_OPERATOR, 62201, "CELTEL", "TD"},
+ {DEVICE_TYPE_OPERATOR, 62202, "LIBERTIS", "TD"},
+ {DEVICE_TYPE_OPERATOR, 62401, "MTN-CAM", "CM"},
+ {DEVICE_TYPE_OPERATOR, 62402, "MOBILIS", "CM"},
+ {DEVICE_TYPE_OPERATOR, 62501, "CPV MOVEL", "CV"},
+ {DEVICE_TYPE_OPERATOR, 62801, "LIBERTIS", "GA"},
+ {DEVICE_TYPE_OPERATOR, 62802, "GO Celtel", "GA"},
+ {DEVICE_TYPE_OPERATOR, 62803, "CELTEL", "GA"},
+ {DEVICE_TYPE_OPERATOR, 62901, "CELTEL", "CG"},
+ {DEVICE_TYPE_OPERATOR, 62910, "LIBERTIS", "CG"},
+ {DEVICE_TYPE_OPERATOR, 63001, "CELLNET", "CD"},
+ {DEVICE_TYPE_OPERATOR, 63002, "CELTEL", "CD"},
+ {DEVICE_TYPE_OPERATOR, 63004, "CELLCO", "CD"},
+ {DEVICE_TYPE_OPERATOR, 63089, "OASIS", "CD"},
+ {DEVICE_TYPE_OPERATOR, 63301, "SEYCEL", "SC"},
+ {DEVICE_TYPE_OPERATOR, 63310, "AIRTEL", "SC"},
+ {DEVICE_TYPE_OPERATOR, 63401, "MobiTel", "MZ"},
+ {DEVICE_TYPE_OPERATOR, 63510, "Rwandacell", "RW"},
+ {DEVICE_TYPE_OPERATOR, 63601, "ETMTN", "ET"},
+ {DEVICE_TYPE_OPERATOR, 63701, "BARAKAAT", "SO"},
+ {DEVICE_TYPE_OPERATOR, 63902, "Safaricom", "KE"},
+ {DEVICE_TYPE_OPERATOR, 63903, "KENCELL", "KE"},
+ {DEVICE_TYPE_OPERATOR, 64001, "TRITEL", "TZ"},
+ {DEVICE_TYPE_OPERATOR, 64002, "MobiTel", "TZ"},
+ {DEVICE_TYPE_OPERATOR, 64003, "ZANTEL", "TZ"},
+ {DEVICE_TYPE_OPERATOR, 64004, "Vodacom", "TZ"},
+ {DEVICE_TYPE_OPERATOR, 64005, "CELTEL", "TZ"},
+ {DEVICE_TYPE_OPERATOR, 64101, "CelTel", "UG"},
+ {DEVICE_TYPE_OPERATOR, 64110, "MTN-UGANDA", "UG"},
+ {DEVICE_TYPE_OPERATOR, 64111, "UTL TELECEL", "UG"},
+ {DEVICE_TYPE_OPERATOR, 64201, "Spacetel", "BI"},
+ {DEVICE_TYPE_OPERATOR, 64202, "SAFARIS", "BI"},
+ {DEVICE_TYPE_OPERATOR, 64301, "mCel", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 64501, "ZAMCELL", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 64502, "TELECEL", "UNKNOW"},
+ {DEVICE_TYPE_OPERATOR, 64601, "Madacom", "MG"},
+ {DEVICE_TYPE_OPERATOR, 64602, "ANTARIS", "MG"},
+ {DEVICE_TYPE_OPERATOR, 64700, "Orange Reunion", "RE"},
+ {DEVICE_TYPE_OPERATOR, 64710, "SFR Reunion", "RE"},
+ {DEVICE_TYPE_OPERATOR, 64801, "NET*ONE", "ZW"},
+ {DEVICE_TYPE_OPERATOR, 64803, "TELECEL", "ZW"},
+ {DEVICE_TYPE_OPERATOR, 64804, "ECONET", "ZW"},
+ {DEVICE_TYPE_OPERATOR, 64901, "MTC", "NA"},
+ {DEVICE_TYPE_OPERATOR, 65001, "CALLPOINT 90", "MW"},
+ {DEVICE_TYPE_OPERATOR, 65010, "CelTel", "MW"},
+ {DEVICE_TYPE_OPERATOR, 65101, "Vodacom", "LS"},
+ {DEVICE_TYPE_OPERATOR, 65201, "MASCOM", "BW"},
+ {DEVICE_TYPE_OPERATOR, 65202, "VISTA", "BW"},
+ {DEVICE_TYPE_OPERATOR, 65310, "SwaziMTN", "SZ"},
+ {DEVICE_TYPE_OPERATOR, 65501, "Vodacom", "ZA"},
+ {DEVICE_TYPE_OPERATOR, 65507, "Cell C (Pty) Ltd", "ZA"},
+ {DEVICE_TYPE_OPERATOR, 65510, "MTN", "ZA"},
+ {DEVICE_TYPE_OPERATOR, 70601, "PERSONAL", "SV"},
+ {DEVICE_TYPE_OPERATOR, 70602, "DIGICEL", "SV"},
+ {DEVICE_TYPE_OPERATOR, 71610, "TIM", "PE"},
+ {DEVICE_TYPE_OPERATOR, 72207, "UNIFON", "AR"},
+ {DEVICE_TYPE_OPERATOR, 72234, "Telecom Personal", "AR"},
+ {DEVICE_TYPE_OPERATOR, 72235, "PORT-HABLE", "AR"},
+ {DEVICE_TYPE_OPERATOR, 72402, "TIM BRASIL", "BR"},
+ {DEVICE_TYPE_OPERATOR, 72403, "TIM BRASIL", "BR"},
+ {DEVICE_TYPE_OPERATOR, 72404, "TIM BRASIL", "BR"},
+ {DEVICE_TYPE_OPERATOR, 72405, "Claro", "BR"},
+ {DEVICE_TYPE_OPERATOR, 72416, "BrTCel", "BR"},
+ {DEVICE_TYPE_OPERATOR, 73001, "ENTEL PCS", "CL"},
+ {DEVICE_TYPE_OPERATOR, 73010, "ENTEL PCS", "CL"},
+ {DEVICE_TYPE_OPERATOR, 73401, "INFONET", "VE"},
+ {DEVICE_TYPE_OPERATOR, 73402, "DIGITEL", "VE"},
+ {DEVICE_TYPE_OPERATOR, 73601, "NUEVATEL", "BO"},
+ {DEVICE_TYPE_OPERATOR, 73602, "ENTEL", "BO"},
+ {DEVICE_TYPE_OPERATOR, 74401, "VOX", "PY"},
+ {DEVICE_TYPE_OPERATOR, 74402, "PY 02", "PY"},
+ {DEVICE_TYPE_OPERATOR, 74601, "ICMS", "SR"},
+ {DEVICE_TYPE_OPERATOR, 74605, "Thuraya", "UNKNOW"} //90105
+};
+
+static struct reserve_id_name area_reserve_id_name[RESERVE_ID_NUMS] = {
+ {DEVICE_TYPE_RESERVE, 0, "no", "CN"},
+};
+
+
+#endif
--- /dev/null
+#ifndef __BOARD_ID_H\r
+#define __BOARD_ID_H\r
+#include <linux/miscdevice.h>\r
+#include <linux/board-id-hw.h>\r
+\r
+enum type_devices{\r
+ DEVICE_TYPE_NULL = 0x0, \r
+\r
+ DEVICE_TYPE_SUM = 0x20, \r
+ DEVICE_TYPE_AREA = 0x24, //\r
+ DEVICE_TYPE_OPERATOR = 0x25, \r
+ DEVICE_TYPE_OPERATOR2 = 0x26,\r
+ DEVICE_TYPE_RESERVE = 0x27, \r
+ DEVICE_TYPE_STATUS = 0x28,\r
+\r
+ DEVICE_TYPE_TP = 0x29, //one byte size\r
+ DEVICE_TYPE_LCD, \r
+ DEVICE_TYPE_KEY, \r
+ DEVICE_TYPE_CODEC,\r
+ DEVICE_TYPE_WIFI,\r
+ DEVICE_TYPE_BT, \r
+ DEVICE_TYPE_GPS, \r
+ DEVICE_TYPE_FM, \r
+ DEVICE_TYPE_MODEM, \r
+ DEVICE_TYPE_DDR,\r
+ DEVICE_TYPE_FLASH,\r
+ DEVICE_TYPE_HDMI,\r
+ DEVICE_TYPE_BATTERY,\r
+ DEVICE_TYPE_CHARGE, \r
+ DEVICE_TYPE_BACKLIGHT,\r
+ DEVICE_TYPE_HEADSET,\r
+ DEVICE_TYPE_MICPHONE,\r
+ DEVICE_TYPE_SPEAKER,\r
+ DEVICE_TYPE_VIBRATOR,\r
+ DEVICE_TYPE_TV, \r
+ DEVICE_TYPE_ECHIP, //30\r
+ DEVICE_TYPE_HUB,\r
+ DEVICE_TYPE_TPAD,\r
+ \r
+ DEVICE_TYPE_PMIC,\r
+ DEVICE_TYPE_REGULATOR,\r
+ DEVICE_TYPE_RTC,\r
+ DEVICE_TYPE_CAMERA_FRONT,\r
+ DEVICE_TYPE_CAMERA_BACK, //35\r
+ DEVICE_TYPE_ANGLE,\r
+ DEVICE_TYPE_ACCEL,\r
+ DEVICE_TYPE_COMPASS,\r
+ DEVICE_TYPE_GYRO,\r
+ DEVICE_TYPE_LIGHT,\r
+ DEVICE_TYPE_PROXIMITY,\r
+ DEVICE_TYPE_TEMPERATURE, \r
+ DEVICE_TYPE_PRESSURE,\r
+ \r
+ DEVICE_NUM_TYPES,\r
+};\r
+\r
+\r
+#if 0\r
+enum id_language{\r
+ LANGUAGE_ID_NULL = 0,\r
+ LANGUAGE_ID_EN,// Ó¢ÎÄ \r
+ LANGUAGE_ID_EN_US,// Ó¢ÎÄ (ÃÀ¹ú) \r
+ LANGUAGE_ID_AR,// °¢À²®ÎÄ \r
+ LANGUAGE_ID_AR_AE,// °¢À²®ÎÄ (°¢À²®ÁªºÏÇõ³¤¹ú) \r
+ LANGUAGE_ID_AR_BH,// °¢À²®ÎÄ (°ÍÁÖ) \r
+ LANGUAGE_ID_AR_DZ,// °¢À²®ÎÄ (°¢¶û¼°ÀûÑÇ) \r
+ LANGUAGE_ID_AR_EG,// °¢À²®ÎÄ (°£¼°) \r
+ LANGUAGE_ID_AR_IQ,// °¢À²®ÎÄ (ÒÁÀ¿Ë) \r
+ LANGUAGE_ID_AR_JO,// °¢À²®ÎÄ (Ô¼µ©) \r
+ LANGUAGE_ID_AR_KW,// °¢À²®ÎÄ (¿ÆÍþÌØ) \r
+ LANGUAGE_ID_AR_LB,// °¢À²®ÎÄ (Àè°ÍÄÛ) \r
+ LANGUAGE_ID_AR_LY,// °¢À²®ÎÄ (Àû±ÈÑÇ) \r
+ LANGUAGE_ID_AR_MA,// °¢À²®ÎÄ (ĦÂå¸ç) \r
+ LANGUAGE_ID_AR_OM,// °¢À²®ÎÄ (°¢Âü) \r
+ LANGUAGE_ID_AR_QA,// °¢À²®ÎÄ (¿¨Ëþ¶û) \r
+ LANGUAGE_ID_AR_SA,// °¢À²®ÎÄ (ɳÌØ°¢À²®) \r
+ LANGUAGE_ID_AR_SD,// °¢À²®ÎÄ (ËÕµ¤) \r
+ LANGUAGE_ID_AR_SY,// °¢À²®ÎÄ (ÐðÀûÑÇ) \r
+ LANGUAGE_ID_AR_TN,// °¢À²®ÎÄ (Í»Äá˹) \r
+ LANGUAGE_ID_AR_YE,// °¢À²®ÎÄ (Ò²ÃÅ) \r
+ LANGUAGE_ID_BE,// °×¶íÂÞ˹ÎÄ \r
+ LANGUAGE_ID_BE_BY,// °×¶íÂÞ˹ÎÄ (°×¶íÂÞ˹) \r
+ LANGUAGE_ID_BG,// ±£¼ÓÀûÑÇÎÄ \r
+ LANGUAGE_ID_BG_BG,// ±£¼ÓÀûÑÇÎÄ (±£¼ÓÀûÑÇ) \r
+ LANGUAGE_ID_CA,// ¼ÓÌ©ÂÞÄáÑÇÎÄ \r
+ LANGUAGE_ID_CA_ES,// ¼ÓÌ©ÂÞÄáÑÇÎÄ (Î÷°àÑÀ) \r
+ LANGUAGE_ID_CA_ES_EURO,// ¼ÓÌ©ÂÞÄáÑÇÎÄ (Î÷°àÑÀ,EURO) \r
+ LANGUAGE_ID_CS,// ½Ý¿ËÎÄ \r
+ LANGUAGE_ID_CS_CZ,// ½Ý¿ËÎÄ (½Ý¿Ë¹²ºÍ¹ú) \r
+ LANGUAGE_ID_DA,// µ¤ÂóÎÄ \r
+ LANGUAGE_ID_DA_DK,// µ¤ÂóÎÄ (µ¤Âó) \r
+ LANGUAGE_ID_DE,// µÂÎÄ \r
+ LANGUAGE_ID_DE_AT,// µÂÎÄ (°ÂµØÀû) \r
+ LANGUAGE_ID_DE_AT_EURO,// µÂÎÄ (°ÂµØÀû,EURO) \r
+ LANGUAGE_ID_DE_CH,// µÂÎÄ (ÈðÊ¿) \r
+ LANGUAGE_ID_DE_DE,// µÂÎÄ (µÂ¹ú) \r
+ LANGUAGE_ID_DE_DE_EURO,// µÂÎÄ (µÂ¹ú,EURO) \r
+ LANGUAGE_ID_DE_LU,// µÂÎÄ (¬ɱ¤) \r
+ LANGUAGE_ID_DE_LU_EURO,// µÂÎÄ (¬ɱ¤,EURO) \r
+ LANGUAGE_ID_EL,// Ï£À°ÎÄ \r
+ LANGUAGE_ID_EL_GR,// Ï£À°ÎÄ (Ï£À°) \r
+ LANGUAGE_ID_EN_AU,// Ó¢ÎÄ (°Ä´óÀûÑÇ) \r
+ LANGUAGE_ID_EN_CA,// Ó¢ÎÄ (¼ÓÄôó) \r
+ LANGUAGE_ID_EN_GB,// Ó¢ÎÄ (Ó¢¹ú) \r
+ LANGUAGE_ID_EN_IE,// Ó¢ÎÄ (°®¶ûÀ¼) \r
+ LANGUAGE_ID_EN_IE_EURO,// Ó¢ÎÄ (°®¶ûÀ¼,EURO) \r
+ LANGUAGE_ID_EN_NZ,// Ó¢ÎÄ (ÐÂÎ÷À¼) \r
+ LANGUAGE_ID_EN_ZA,// Ó¢ÎÄ (ÄÏ·Ç) \r
+ LANGUAGE_ID_ES,// Î÷°àÑÀÎÄ \r
+ LANGUAGE_ID_ES_BO,// Î÷°àÑÀÎÄ (²£ÀûάÑÇ) \r
+ LANGUAGE_ID_ES_AR,// Î÷°àÑÀÎÄ (°¢¸ùÍ¢) \r
+ LANGUAGE_ID_ES_CL,// Î÷°àÑÀÎÄ (ÖÇÀû) \r
+ LANGUAGE_ID_ES_CO,// Î÷°àÑÀÎÄ (¸çÂ×±ÈÑÇ) \r
+ LANGUAGE_ID_ES_CR,// Î÷°àÑÀÎÄ (¸ç˹´ïÀè¼Ó) \r
+ LANGUAGE_ID_ES_DO,// Î÷°àÑÀÎÄ (¶àÃ×Äá¼Ó¹²ºÍ¹ú) \r
+ LANGUAGE_ID_ES_EC,// Î÷°àÑÀÎÄ (¶ò¹Ï¶à¶û) \r
+ LANGUAGE_ID_ES_ES,// Î÷°àÑÀÎÄ (Î÷°àÑÀ) \r
+ LANGUAGE_ID_ES_ES_EURO,// Î÷°àÑÀÎÄ (Î÷°àÑÀ,EURO) \r
+ LANGUAGE_ID_ES_GT,// Î÷°àÑÀÎÄ (ΣµØÂíÀ) \r
+ LANGUAGE_ID_ES_HN,// Î÷°àÑÀÎÄ (ºé¶¼À˹) \r
+ LANGUAGE_ID_ES_MX,// Î÷°àÑÀÎÄ (Ä«Î÷¸ç) \r
+ LANGUAGE_ID_ES_NI,// Î÷°àÑÀÎÄ (Äá¼ÓÀ¹Ï) \r
+ LANGUAGE_ID_ET,// °®É³ÄáÑÇÎÄ \r
+ LANGUAGE_ID_ES_PA,// Î÷°àÑÀÎÄ (°ÍÄÃÂí) \r
+ LANGUAGE_ID_ES_PE,// Î÷°àÑÀÎÄ (Ãس) \r
+ LANGUAGE_ID_ES_PR,// Î÷°àÑÀÎÄ (²¨¶àÀè¸ç) \r
+ LANGUAGE_ID_ES_PY,// Î÷°àÑÀÎÄ (°ÍÀ¹ç) \r
+ LANGUAGE_ID_ES_SV,// Î÷°àÑÀÎÄ (Èø¶ûÍ߶à) \r
+ LANGUAGE_ID_ES_UY,// Î÷°àÑÀÎÄ (ÎÚÀ¹ç) \r
+ LANGUAGE_ID_ES_VE,// Î÷°àÑÀÎÄ (ίÄÚÈðÀ) \r
+ LANGUAGE_ID_ET_EE,// °®É³ÄáÑÇÎÄ (°®É³ÄáÑÇ) \r
+ LANGUAGE_ID_FI,// ·ÒÀ¼ÎÄ \r
+ LANGUAGE_ID_FI_FI,// ·ÒÀ¼ÎÄ (·ÒÀ¼) \r
+ LANGUAGE_ID_FI_FI_EURO,// ·ÒÀ¼ÎÄ (·ÒÀ¼,EURO) \r
+ LANGUAGE_ID_FR,// ·¨ÎÄ \r
+ LANGUAGE_ID_FR_BE,// ·¨ÎÄ (±ÈÀûʱ) \r
+ LANGUAGE_ID_FR_BE_EURO,// ·¨ÎÄ (±ÈÀûʱ,EURO) \r
+ LANGUAGE_ID_FR_CA,// ·¨ÎÄ (¼ÓÄôó) \r
+ LANGUAGE_ID_FR_CH,// ·¨ÎÄ (ÈðÊ¿) \r
+ LANGUAGE_ID_FR_FR,// ·¨ÎÄ (·¨¹ú) \r
+ LANGUAGE_ID_FR_FR_EURO,// ·¨ÎÄ (·¨¹ú,EURO) \r
+ LANGUAGE_ID_FR_LU,// ·¨ÎÄ (¬ɱ¤) \r
+ LANGUAGE_ID_FR_LU_EURO,// ·¨ÎÄ (¬ɱ¤,EURO) \r
+ LANGUAGE_ID_HR,// ¿ËÂÞµØÑÇÎÄ \r
+ LANGUAGE_ID_HR_HR,// ¿ËÂÞµØÑÇÎÄ (¿ËÂÞµØÑÇ) \r
+ LANGUAGE_ID_HU,// ÐÙÑÀÀûÎÄ \r
+ LANGUAGE_ID_HU_HU,// ÐÙÑÀÀûÎÄ (ÐÙÑÀÀû) \r
+ LANGUAGE_ID_IS,// ±ùµºÎÄ \r
+ LANGUAGE_ID_IS_IS,// ±ùµºÎÄ (±ùµº) \r
+ LANGUAGE_ID_IT,// Òâ´óÀûÎÄ \r
+ LANGUAGE_ID_IT_CH,// Òâ´óÀûÎÄ (ÈðÊ¿) \r
+ LANGUAGE_ID_IT_IT,// Òâ´óÀûÎÄ (Òâ´óÀû) \r
+ LANGUAGE_ID_IT_IT_EURO,// Òâ´óÀûÎÄ (Òâ´óÀû,EURO) \r
+ LANGUAGE_ID_IW,// Ï£²®À´ÎÄ \r
+ LANGUAGE_ID_IW_IL,// Ï£²®À´ÎÄ (ÒÔÉ«ÁÐ) \r
+ LANGUAGE_ID_JA,// ÈÕÎÄ \r
+ LANGUAGE_ID_JA_JP,// ÈÕÎÄ (ÈÕ±¾) \r
+ LANGUAGE_ID_KO,// ³¯ÏÊÎÄ \r
+ LANGUAGE_ID_KO_KR,// ³¯ÏÊÎÄ (Äϳ¯ÏÊ) \r
+ LANGUAGE_ID_LT,// Á¢ÌÕÍðÎÄ \r
+ LANGUAGE_ID_LT_LT,// Á¢ÌÕÍðÎÄ (Á¢ÌÕÍð) \r
+ LANGUAGE_ID_LV,// ÀÍÐάÑÇÎÄ(ÁÐÍÐ) \r
+ LANGUAGE_ID_LV_LV,// ÀÍÐάÑÇÎÄ(ÁÐÍÐ) (ÀÍÑάÑÇ) \r
+ LANGUAGE_ID_MK,// ÂíÆä¶ÙÎÄ \r
+ LANGUAGE_ID_MK_MK,// ÂíÆä¶ÙÎÄ (ÂíÆä¶ÙÍõ¹ú) \r
+ LANGUAGE_ID_NL,// ºÉÀ¼ÎÄ \r
+ LANGUAGE_ID_NL_BE,// ºÉÀ¼ÎÄ (±ÈÀûʱ) \r
+ LANGUAGE_ID_NL_BE_EURO,// ºÉÀ¼ÎÄ (±ÈÀûʱ,EURO) \r
+ LANGUAGE_ID_NL_NL,// ºÉÀ¼ÎÄ (ºÉÀ¼) \r
+ LANGUAGE_ID_NL_NL_EURO,// ºÉÀ¼ÎÄ (ºÉÀ¼,EURO) \r
+ LANGUAGE_ID_NO,// ŲÍþÎÄ \r
+ LANGUAGE_ID_NO_NO,// ŲÍþÎÄ (ŲÍþ) \r
+ LANGUAGE_ID_NO_NO_NY,// ŲÍþÎÄ (ŲÍþ,NYNORSK) \r
+ LANGUAGE_ID_PL,// ²¨À¼ÎÄ \r
+ LANGUAGE_ID_PL_PL,// ²¨À¼ÎÄ (²¨À¼) \r
+ LANGUAGE_ID_PT,// ÆÏÌÑÑÀÎÄ \r
+ LANGUAGE_ID_PT_BR,// ÆÏÌÑÑÀÎÄ (°ÍÎ÷) \r
+ LANGUAGE_ID_PT_PT,// ÆÏÌÑÑÀÎÄ (ÆÏÌÑÑÀ) \r
+ LANGUAGE_ID_PT_PT_EURO,// ÆÏÌÑÑÀÎÄ (ÆÏÌÑÑÀ,EURO) \r
+ LANGUAGE_ID_RO,// ÂÞÂíÄáÑÇÎÄ \r
+ LANGUAGE_ID_RO_RO,// ÂÞÂíÄáÑÇÎÄ (ÂÞÂíÄáÑÇ) \r
+ LANGUAGE_ID_RU,// ¶íÎÄ \r
+ LANGUAGE_ID_RU_RU,// ¶íÎÄ (¶íÂÞ˹) \r
+ LANGUAGE_ID_SH,// Èû²¨Äá˹-¿ËÂÞµØÑÇÎÄ \r
+ LANGUAGE_ID_SH_YU,// Èû²¨Äá˹-¿ËÂÞµØÑÇÎÄ (ÄÏ˹À·ò) \r
+ LANGUAGE_ID_SK,// ˹Âå·¥¿ËÎÄ \r
+ LANGUAGE_ID_SK_SK,// ˹Âå·¥¿ËÎÄ (˹Âå·¥¿Ë) \r
+ LANGUAGE_ID_SL,// ˹ÂåÎÄÄáÑÇÎÄ \r
+ LANGUAGE_ID_SL_SI,// ˹ÂåÎÄÄáÑÇÎÄ (˹ÂåÎÄÄáÑÇ) \r
+ LANGUAGE_ID_SQ,// °¢¶û°ÍÄáÑÇÎÄ \r
+ LANGUAGE_ID_SQ_AL,// °¢¶û°ÍÄáÑÇÎÄ (°¢¶û°ÍÄáÑÇ) \r
+ LANGUAGE_ID_SR,// Èû¶ûάÑÇÎÄ \r
+ LANGUAGE_ID_SR_YU,// Èû¶ûάÑÇÎÄ (ÄÏ˹À·ò) \r
+ LANGUAGE_ID_SV,// ÈðµäÎÄ \r
+ LANGUAGE_ID_SV_SE,// ÈðµäÎÄ (Èðµä) \r
+ LANGUAGE_ID_TH,// Ì©ÎÄ \r
+ LANGUAGE_ID_TH_TH,// Ì©ÎÄ (Ì©¹ú) \r
+ LANGUAGE_ID_TR,// ÍÁ¶úÆäÎÄ \r
+ LANGUAGE_ID_TR_TR,// ÍÁ¶úÆäÎÄ (ÍÁ¶úÆä) \r
+ LANGUAGE_ID_UK,// ÎÚ¿ËÀ¼ÎÄ \r
+ LANGUAGE_ID_UK_UA,// ÎÚ¿ËÀ¼ÎÄ (ÎÚ¿ËÀ¼) \r
+ LANGUAGE_ID_ZH,// ÖÐÎÄ \r
+ LANGUAGE_ID_ZH_CN,// ÖÐÎÄ (Öйú) \r
+ LANGUAGE_ID_ZH_HK,// ÖÐÎÄ (Ïã¸Û) \r
+ LANGUAGE_ID_ZH_TW,// ÖÐÎÄ (̨Íå) ¡¡¡¡ \r
+ AREA_ID_NUMS,\r
+};\r
+#endif\r
+\r
+\r
+\r
+enum area_id{\r
+ AREA_ID_NULL,\r
+ AREA_ID_ALBANIA,\r
+ AREA_ID_ALGERIA,\r
+ AREA_ID_ANGOLA,\r
+ AREA_ID_ARGENTINA,\r
+ AREA_ID_AUSTRALIA,\r
+ AREA_ID_AUSTRIA,\r
+ AREA_ID_AZERBAIJAN,\r
+ AREA_ID_BAHRAIN,\r
+ AREA_ID_BANGLADESH,\r
+ AREA_ID_BARBADOS,\r
+ AREA_ID_BELARUS,\r
+ AREA_ID_BELGIUM,\r
+ AREA_ID_BOLIVIA,\r
+ AREA_ID_BOSNIA_AND_HERZEGOVINA,\r
+ AREA_ID_BOTSWANA,\r
+ AREA_ID_BRAZIL,\r
+ AREA_ID_BULGARIA,\r
+ AREA_ID_CANADA,\r
+ AREA_ID_CHILE,\r
+ AREA_ID_CHINA,\r
+ AREA_ID_COLOMBIA,\r
+ AREA_ID_COTE_D_IVOIRE,\r
+ AREA_ID_CROATIA,\r
+ AREA_ID_CYPRUS,\r
+ AREA_ID_CZECH_REPUBLIC,\r
+ AREA_ID_DENMARK,\r
+ AREA_ID_ECUADOR,\r
+ AREA_ID_EGYPT,\r
+ AREA_ID_ESTONIA,\r
+ AREA_ID_FINLAND,\r
+ AREA_ID_FRANCE_INC_GUADELOUPE,\r
+ AREA_ID_GEORGIA,\r
+ AREA_ID_GERMANY,\r
+ AREA_ID_GREECE,\r
+ AREA_ID_HAITI,\r
+ AREA_ID_HONDURAS,\r
+ AREA_ID_HONG_KONG,\r
+ AREA_ID_HUNGARY,\r
+ AREA_ID_ICELAND,\r
+ AREA_ID_INDIA,\r
+ AREA_ID_INDONESIA,\r
+ AREA_ID_IRELAND,\r
+ AREA_ID_ISRAEL,\r
+ AREA_ID_ITALY,\r
+ AREA_ID_JAMAICA,\r
+ AREA_ID_JAPAN,\r
+ AREA_ID_JORDAN,\r
+ AREA_ID_KAZAKHSTAN,\r
+ AREA_ID_KENYA,\r
+ AREA_ID_KOREA_SOUTH,\r
+ AREA_ID_KUWAIT,\r
+ AREA_ID_LATVIA,\r
+ AREA_ID_LEBANON,\r
+ AREA_ID_LITHUANIA,\r
+ AREA_ID_LUXEMBOURG,\r
+ AREA_ID_MACEDONIA,\r
+ AREA_ID_MALAYSIA,\r
+ AREA_ID_MEXICO,\r
+ AREA_ID_MOLDOVA,\r
+ AREA_ID_MOROCCO,\r
+ AREA_ID_NEPAL,\r
+ AREA_ID_NETHERLAND_ANTILLES,\r
+ AREA_ID_NETHERLANDS_INC_BONAIRE,\r
+ AREA_ID_NEW_ZEALAND,\r
+ AREA_ID_NIGERIA,\r
+ AREA_ID_NORWAY,\r
+ AREA_ID_OMAN,\r
+ AREA_ID_PAKISTAN,\r
+ AREA_ID_PARAGUAY,\r
+ AREA_ID_PERU,\r
+ AREA_ID_PHILIPPINES,\r
+ AREA_ID_POLAND,\r
+ AREA_ID_PORTUGAL,\r
+ AREA_ID_QATAR,\r
+ AREA_ID_ROMANIA,\r
+ AREA_ID_RUSSIA,\r
+ AREA_ID_SAUDI_ARABIA,\r
+ AREA_ID_SERBIA,\r
+ AREA_ID_SINGAPORE,\r
+ AREA_ID_SLOVAKIA,\r
+ AREA_ID_SLOVENIA,\r
+ AREA_ID_SOUTH_AFRICA,\r
+ AREA_ID_SPAIN,\r
+ AREA_ID_SRI_LANKA,\r
+ AREA_ID_SWEDEN,\r
+ AREA_ID_SWITZERLAND,\r
+ AREA_ID_TAIWAN,\r
+ AREA_ID_THAILAND,\r
+ AREA_ID_TRINIDAD_TOBAGO,\r
+ AREA_ID_TUNISIA,\r
+ AREA_ID_TURKEY,\r
+ AREA_ID_TURKMENISTAN,\r
+ AREA_ID_UGANDA,\r
+ AREA_ID_UKRAINE,\r
+ AREA_ID_UNITED_KINGDOM,\r
+ AREA_ID_UNITED_STATES,\r
+ AREA_ID_URUGUAY,\r
+ AREA_ID_UZBEKISTAN,\r
+ AREA_ID_VENEZUELA,\r
+ AREA_ID_VIETNAM,\r
+ AREA_ID_NORDICS,\r
+ AREA_ID_BALTIC,\r
+ AREA_ID_CZECH_SLOVAKIA,\r
+ AREA_ID_CROATIA_SLOVENIA,\r
+ AREA_ID_LA_GROUP,\r
+ AREA_ID_UNITED_ARAB_EMIRATES,\r
+ AREA_ID_EMAT_UK,\r
+ AREA_ID_EMAT_FR,\r
+ AREA_ID_EMAT_PO,\r
+ AREA_ID_INDIA_HI,\r
+ AREA_ID_UAE_EN,\r
+ AREA_ID_ISRAEL_AR,\r
+ AREA_ID_NETHERLANDS_INC_BONAIRE_ENUS,\r
+ AREA_ID_NUMS,\r
+};\r
+\r
+#define DEVICE_TYPE_VALID 0xff\r
+#define DEVICE_TYPE_INVALID -1\r
+\r
+#define DEVICE_ID_VALID 0xff\r
+#define DEVICE_ID_INVALID -1\r
+\r
+#define DEVICE_ID_NULL 0\r
+\r
+enum id_mm_type{\r
+ BID_MM_IOMEM,\r
+ BID_MM_IOREMAP,\r
+};\r
+\r
+\r
+enum id_tp{ \r
+ TP_ID_NULL = 0,\r
+ TP_ID_GT813,\r
+ TP_ID_EKTF2K,\r
+ TP_ID_NUMS,\r
+};\r
+\r
+enum id_lcd{\r
+ LCD_ID_NULL = 0,\r
+ LCD_ID_IVO_M101_NWN8, \r
+ LCD_ID_EDID_I2C,\r
+ LCD_ID_NUMS,\r
+};\r
+\r
+enum id_key{\r
+ KEY_ID_NULL = 0,\r
+ KEY_ID_SHUTTLE,\r
+ KEY_ID_BITLAND,\r
+ KEY_ID_MALATA,\r
+ KEY_ID_CAPSENSE,\r
+ KEY_ID_ENGLISH_US,\r
+ KEY_ID_ENGLISH_UK,\r
+ KEY_ID_TURKISH,\r
+ KEY_ID_SLOVENIAN,\r
+ KEY_ID_RUSSIAN,\r
+ KEY_ID_CZECH,\r
+ KEY_ID_HUNGARIAN,\r
+ KEY_ID_HINDI,\r
+ KEY_ID_THAI,\r
+ KEY_ID_PORTUGUESE,\r
+ KEY_ID_ARABIC,\r
+ KEY_ID_GREEK,\r
+ KEY_ID_SWEDISH,\r
+ KEY_ID_NORWEGIAN,\r
+ KEY_ID_FINNISH,\r
+ KEY_ID_DANISH,\r
+ KEY_ID_ESTONIAN,\r
+ KEY_ID_FRENCH,\r
+ KEY_ID_GERMAN,\r
+ KEY_ID_HEBREW,\r
+ KEY_ID_ITALIAN,\r
+ KEY_ID_SPANISH,\r
+ KEY_ID_SWISS,\r
+ KEY_ID_DUTCH,\r
+ KEY_ID_BELGIAN,\r
+ KEY_ID_NORDIC,\r
+ KEY_ID_NUMS,\r
+};\r
+\r
+enum id_codec{\r
+ CODEC_ID_NULL = 0,\r
+ CODEC_ID_WM8994,\r
+ CODEC_ID_WM8900,\r
+ CODEC_ID_WM8988,\r
+ CODEC_ID_RT5616, \r
+ CODEC_ID_RT5621,\r
+ CODEC_ID_RT5623,\r
+ CODEC_ID_RT3224, \r
+ CODEC_ID_RT5625, \r
+ CODEC_ID_RT5631,\r
+ CODEC_ID_RT5639, \r
+ CODEC_ID_RT5640,\r
+ CODEC_ID_RT5642, \r
+ CODEC_ID_RT3261,\r
+ CODEC_ID_AIC3262,\r
+ CODEC_ID_RK610,\r
+ CODEC_ID_RK616, \r
+ CODEC_ID_RK1000,\r
+ CODEC_ID_CS42L52,\r
+ CODEC_ID_ES8323,\r
+ CODEC_ID_NUMS,\r
+};\r
+\r
+\r
+enum id_wifi{\r
+ WIFI_ID_NULL = 0,\r
+ \r
+ //brcm wifi\r
+ WIFI_ID_BCM,\r
+ WIFI_ID_BCM4319,\r
+ WIFI_ID_BCM4330,\r
+ WIFI_ID_RK903_26M,\r
+ WIFI_ID_RK903_37M,\r
+ WIFI_ID_BCM4329,\r
+ WIFI_ID_RK901,\r
+ WIFI_ID_AP6181,\r
+ WIFI_ID_AP6210,\r
+ WIFI_ID_AP6330,\r
+ WIFI_ID_AP6476,\r
+ WIFI_ID_AP6493,\r
+ WIFI_ID_GB86302I,\r
+\r
+ //RealTek wifi\r
+ WIFI_ID_RTL8192CU,\r
+ WIFI_ID_RTL8188EU,\r
+ WIFI_ID_RTL8723AU,\r
+\r
+ //Mediatek wifi\r
+ WIFI_ID_COMBO,\r
+ WIFI_ID_MT5931,\r
+ WIFI_ID_RT5370,\r
+ WIFI_ID_NUMS,\r
+};\r
+\r
+\r
+enum id_bt{\r
+ BT_ID_NULL = 0,\r
+ \r
+ //brcm bluetooth\r
+ BT_ID_NH660,\r
+ BT_ID_BCM4330,\r
+ BT_ID_RK903_26M,\r
+ BT_ID_RK903,\r
+ BT_ID_BCM4329,\r
+ BT_ID_MV8787,\r
+ BT_ID_AP6210,\r
+ BT_ID_AP6330,\r
+ BT_ID_AP6476,\r
+ BT_ID_AP6493,\r
+ BT_ID_RFKILL,\r
+ \r
+ //REALTEK bluetooth\r
+ BT_ID_RTL8723,\r
+\r
+ //MTK bluetooth\r
+ BT_ID_MT6622,\r
+\r
+ //RDA bluetooth\r
+\r
+ BT_ID_NUMS,\r
+};\r
+\r
+\r
+enum id_gps{\r
+ GPS_ID_NULL = 0,\r
+ GPS_ID_RK_HV5820,\r
+ GPS_ID_BCM4751,\r
+ GPS_ID_GNS7560, \r
+ GPS_ID_MT3326,\r
+ GPS_ID_NUMS,\r
+};\r
+\r
+enum id_fm{\r
+ FM_ID_NULL = 0,\r
+ FM_ID_NUMS,\r
+};\r
+\r
+//include/linux/bp-auto.h\r
+enum id_modem\r
+{\r
+ MODEM_ID_NULL = 0,\r
+ MODEM_ID_MT6229, //USI MT6229 WCDMA\r
+ MODEM_ID_MU509, //huawei MU509 WCDMA\r
+ MODEM_ID_MI700, //thinkwill MI700 WCDMA\r
+ MODEM_ID_MW100, //thinkwill MW100 WCDMA\r
+ MODEM_ID_TD8801, //spreadtrum SC8803 TD-SCDMA\r
+ MODEM_ID_SC6610, //spreadtrum SC6610 GSM\r
+ MODEM_ID_M50, //spreadtrum RDA GSM\r
+ MODEM_ID_MT6250, //ZINN M50 EDGE\r
+ MODEM_ID_C66A, //zhongben\r
+ MODEM_ID_NUMS,\r
+};\r
+\r
+ \r
+enum id_ddr{\r
+ DDR_ID_NULL = 0,\r
+ DDR_ID_NUMS,\r
+};\r
+\r
+enum id_flash{\r
+ FLASH_ID_NULL = 0,\r
+ FLASH_ID_NUMS,\r
+};\r
+\r
+enum id_hdmi{\r
+ HDMI_ID_NULL = 0,\r
+ HDMI_ID_RK30,\r
+ HDMI_ID_CAT66121,\r
+ HDMI_ID_RK610,\r
+ HDMI_ID_NUMS,\r
+};\r
+\r
+enum id_battery{\r
+ BATTERY_ID_NULL = 0,\r
+ BATTERY_ID_3300MAH, \r
+ BATTERY_ID_3600MAH, \r
+ BATTERY_ID_4700MAH, \r
+ BATTERY_ID_7000MAH, \r
+ BATTERY_ID_7700MAH,\r
+ BATTERY_ID_9000MAH,\r
+ BATTERY_ID_BLUEBERRY,\r
+ BATTERY_ID_NUMS,\r
+};\r
+\r
+enum id_charge{\r
+ CHARGE_ID_NULL = 0,\r
+ CHARGE_ID_CW2015, \r
+ CHARGE_ID_BQ24193,\r
+ CHARGE_ID_BQ27541,\r
+ CHARGE_ID_OZ8806,\r
+ CHARGE_ID_NUMS,\r
+};\r
+ \r
+enum id_backlight{\r
+ BACKLIGHT_ID_NULL = 0,\r
+ BACKLIGHT_ID_RK29,\r
+ BACKLIGHT_ID_WM831X,\r
+ BACKLIGHT_ID_NUMS,\r
+};\r
+\r
+enum id_headset{\r
+ HEADSET_ID_NULL = 0,\r
+ HEADSET_ID_RK29,\r
+ HEADSET_ID_NUMS,\r
+};\r
+\r
+enum id_micphone{\r
+ MICPHONE_ID_NULL = 0,\r
+ MICPHONE_ID_ANALOGIC,\r
+ MICPHONE_ID_DIGITAL,\r
+ MICPHONE_ID_NUMS,\r
+};\r
+\r
+enum id_speaker{\r
+ SPEAKER_ID_NULL = 0,\r
+ SPEAKER_ID_0W8,\r
+ SPEAKER_ID_1W0,\r
+ SPEAKER_ID_1W5,\r
+ SPEAKER_ID_NUMS,\r
+};\r
+\r
+enum id_vibrator{\r
+ VIBRATOR_ID_NULL = 0,\r
+ VIBRATOR_ID_RK29,\r
+ VIBRATOR_ID_NUMS,\r
+};\r
+\r
+enum id_tv{\r
+ TV_ID_NULL = 0,\r
+ TV_ID_RK610,\r
+ TV_ID_NUMS,\r
+};\r
+ \r
+enum id_echip{\r
+ ECHIP_ID_NULL = 0,\r
+ ECHIP_ID_IT8561, \r
+ ECHIP_ID_ITE,\r
+ ECHIP_ID_NUMS,\r
+};\r
+\r
+enum id_hub{\r
+ HUB_ID_NULL = 0,\r
+ HUB_ID_USB4604, \r
+ HUB_ID_NUMS,\r
+};\r
+\r
+enum id_tpad{\r
+ TPAD_ID_NULL = 0,\r
+ TPAD_ID_ELAN, \r
+ TPAD_ID_SYNS,\r
+ TPAD_ID_NUMS,\r
+}; \r
+ \r
+enum id_pmic{\r
+ PMIC_ID_NULL = 0,\r
+ PMIC_ID_WM831X,\r
+ PMIC_ID_WM8326,\r
+ PMIC_ID_TPS65910,\r
+ PMIC_ID_ACT8846,\r
+ PMIC_ID_NUMS,\r
+};\r
+\r
+enum id_regulator{\r
+ REGULATOR_ID_NULL = 0,\r
+ REGULATOR_ID_PWM3,\r
+ REGULATOR_ID_NUMS,\r
+};\r
+\r
+enum id_rtc{\r
+ RTC_ID_NULL = 0,\r
+ RTC_ID_HYM8563,\r
+ RTC_ID_PCF8563,\r
+ RTC_ID_TPS65910,\r
+ RTC_ID_WM8326,\r
+ RTC_ID_RK,\r
+ RTC_ID_NUMS,\r
+};\r
+\r
+enum id_camera_front{\r
+ CAMERA_FRONT_ID_NULL = 0,\r
+ CAMERA_FRONT_ID_NUMS,\r
+};\r
+\r
+enum id_camera_back{\r
+ CAMERA_BACK_ID_NULL = 0,\r
+ CAMERA_BACK_ID_NUMS,\r
+};\r
+ \r
+enum id_sensor_angle{\r
+ ANGLE_ID_NULL = 0,\r
+ ANGLE_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_accel{\r
+ ACCEL_ID_NULL = 0,\r
+ ACCEL_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_compass{\r
+ COMPASS_ID_NULL = 0,\r
+ COMPASS_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_gyro{\r
+ GYRO_ID_NULL = 0,\r
+ GYRO_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_light{\r
+ LIGHT_ID_NULL = 0,\r
+ LIGHT_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_proximity{\r
+ PROXIMITY_ID_NULL = 0,\r
+ PROXIMITY_ID_NUMS,\r
+};\r
+\r
+enum id_sensor_temperature{\r
+ TEMPERATURE_ID_NULL = 0,\r
+ TEMPERATURE_ID_NUMS,\r
+};\r
+ \r
+enum id_sensor_pressure{\r
+ PRESSURE_ID_NULL = 0,\r
+ PRESSURE_ID_NUMS,\r
+};\r
+\r
+enum id_led{\r
+ LED_ID_NULL = 0,\r
+ LED_ID_NUMS,\r
+};\r
+\r
+\r
+#define COUNTRY_AREA_NULL "no"\r
+#define LOCALE_LANGUAGE_NULL "no"\r
+#define LOCALE_REGION_NULL "no"\r
+#define COUNTRY_GEO_NULL "no"\r
+#define TIME_ZONE_NULL "no"\r
+#define USER_DEFINE_NULL "no"\r
+\r
+\r
+#define LOCALE_LANGUAGE_AR "ar" //°¢À²®ÎÄ\r
+#define LOCALE_LANGUAGE_BE "be" //°×¶íÂÞ˹ÎÄ\r
+#define LOCALE_LANGUAGE_BG "bg" //±£¼ÓÀûÑÇÎÄ\r
+#define LOCALE_LANGUAGE_CA "ca" //¼ÓÌ©ÂÞÄáÑÇÎÄ\r
+#define LOCALE_LANGUAGE_CS "cs" //½Ý¿ËÎÄ\r
+#define LOCALE_LANGUAGE_DA "da" //µ¤ÂóÎÄ\r
+#define LOCALE_LANGUAGE_DE "de" //µÂÎÄ\r
+#define LOCALE_LANGUAGE_EL "el" //Ï£À°ÎÄ\r
+#define LOCALE_LANGUAGE_EN "en" //Ó¢ÎÄ\r
+#define LOCALE_LANGUAGE_ES "es" //Î÷°àÑÀÎÄ\r
+#define LOCALE_LANGUAGE_ET "et" //°®É³ÄáÑÇÎÄ\r
+#define LOCALE_LANGUAGE_FI "fi" //·ÒÀ¼ÎÄ\r
+#define LOCALE_LANGUAGE_FR "fr" //·¨ÎÄ\r
+#define LOCALE_LANGUAGE_HR "hr" //¿ËÂÞµØÑÇÎÄ\r
+#define LOCALE_LANGUAGE_HU "hu" //ÐÙÑÀÀûÎÄ\r
+#define LOCALE_LANGUAGE_IN "in" //Ó¡¶ÈÄáÎ÷ÑÇÎÄ(Ó¡¶ÈÄáÎ÷ÑÇ)\r
+#define LOCALE_LANGUAGE_IS "is" //±ùµºÎÄ\r
+#define LOCALE_LANGUAGE_IT "it" //Òâ´óÀûÎÄ\r
+#define LOCALE_LANGUAGE_IW "iw" //Ï£²®À´ÎÄ\r
+#define LOCALE_LANGUAGE_JA "ja" //ÈÕÎÄ\r
+#define LOCALE_LANGUAGE_KO "ko" //³¯ÏÊÎÄ\r
+#define LOCALE_LANGUAGE_LT "lt" //Á¢ÌÕÍðÎÄ\r
+#define LOCALE_LANGUAGE_LV "lv" //ÀÍÐάÑÇÎÄ(ÁÐÍÐ)\r
+#define LOCALE_LANGUAGE_MK "mk" //ÂíÆä¶ÙÎÄ\r
+#define LOCALE_LANGUAGE_MS "ms" //ÂíÀ´Î÷ÑÇÓï(ÂíÀ´Î÷ÑÇ)\r
+#define LOCALE_LANGUAGE_NL "nl" //ºÉÀ¼ÎÄ\r
+#define LOCALE_LANGUAGE_NO "no" //ŲÍþÎÄ\r
+#define LOCALE_LANGUAGE_PL "pl" //²¨À¼ÎÄ\r
+#define LOCALE_LANGUAGE_PT "pt" //ÆÏÌÑÑÀÎÄ\r
+#define LOCALE_LANGUAGE_RO "ro" //ÂÞÂíÄáÑÇÎÄ\r
+#define LOCALE_LANGUAGE_RU "ru" //¶íÎÄ\r
+#define LOCALE_LANGUAGE_SH "sh" //Èû²¨Äá˹-¿ËÂÞµØÑÇÎÄ\r
+#define LOCALE_LANGUAGE_SK "sk" //˹Âå·¥¿ËÎÄ\r
+#define LOCALE_LANGUAGE_SL "sl" //˹ÂåÎÄÄáÑÇÎÄ\r
+#define LOCALE_LANGUAGE_SQ "sq" //°¢¶û°ÍÄáÑÇÎÄ\r
+#define LOCALE_LANGUAGE_SR "sr" //Èû¶ûάÑÇÎÄ\r
+#define LOCALE_LANGUAGE_SV "sv" //ÈðµäÎÄ\r
+#define LOCALE_LANGUAGE_SW "sw" //˹ÍßÏ£ÀïÓï(¿ÏÄáÑÇ)\r
+#define LOCALE_LANGUAGE_TH "th" //Ì©ÎÄ\r
+#define LOCALE_LANGUAGE_TL "tl" //·ÆÂɱöÓï(·ÆÂɱö)\r
+#define LOCALE_LANGUAGE_TR "tr" //ÍÁ¶úÆäÎÄ\r
+#define LOCALE_LANGUAGE_UK "uk" //ÎÚ¿ËÀ¼ÎÄ\r
+#define LOCALE_LANGUAGE_VI "vi" //Ô½ÄÏÓï(Ô½ÄÏ)\r
+#define LOCALE_LANGUAGE_ZH "zh" //ÖÐÎÄ \r
+\r
+\r
+#define LOCALE_REGION_AE "AE" // °¢À²®ÎÄ (°¢À²®ÁªºÏÇõ³¤¹ú) \r
+#define LOCALE_REGION_AL "AL" // °¢¶û°ÍÄáÑÇÎÄ (°¢¶û°ÍÄáÑÇ)\r
+#define LOCALE_REGION_AN "AN" //Netherland Antilles\r
+#define LOCALE_REGION_AO "AO" //Angola\r
+#define LOCALE_REGION_AR "AR" // Î÷°àÑÀÎÄ (°¢¸ùÍ¢) \r
+#define LOCALE_REGION_AT "AT" // µÂÎÄ (°ÂµØÀû) \r
+#define LOCALE_REGION_AT_EURO "AT_EURO" // µÂÎÄ (°ÂµØÀû EURO) \r
+#define LOCALE_REGION_AU "AU" // Ó¢ÎÄ (°Ä´óÀûÑÇ) \r
+#define LOCALE_REGION_AZ "AZ" //Azerbaijan\r
+#define LOCALE_REGION_BA "BA" //Bosnia and Herzegovina\r
+#define LOCALE_REGION_BB "BB" //Barbados\r
+#define LOCALE_REGION_BD "BD" //Bangladesh\r
+#define LOCALE_REGION_BE "BE" // ·¨ÎÄ (±ÈÀûʱ) \r
+#define LOCALE_REGION_BE_EURO "BE_EURO" // ·¨ÎÄ (±ÈÀûʱ EURO) \r
+#define LOCALE_REGION_BG "BG" // ±£¼ÓÀûÑÇÎÄ (±£¼ÓÀûÑÇ)\r
+#define LOCALE_REGION_BH "BH" // °¢À²®ÎÄ (°ÍÁÖ) \r
+#define LOCALE_REGION_BO "BO" // Î÷°àÑÀÎÄ (²£ÀûάÑÇ) \r
+#define LOCALE_REGION_BR "BR" // ÆÏÌÑÑÀÎÄ (°ÍÎ÷) \r
+#define LOCALE_REGION_BW "BW" //Botswana\r
+#define LOCALE_REGION_BY "BY" // °×¶íÂÞ˹ÎÄ (°×¶íÂÞ˹)\r
+#define LOCALE_REGION_CA "CA" // Ó¢ÎÄ (¼ÓÄôó) \r
+#define LOCALE_REGION_CH "CH" // µÂÎÄ (ÈðÊ¿) \r
+#define LOCALE_REGION_CI "CI" //Cote d'Ivoire\r
+#define LOCALE_REGION_CL "CL" // Î÷°àÑÀÎÄ (ÖÇÀû) \r
+#define LOCALE_REGION_CN "CN" // ÖÐÎÄ (Öйú) \r
+#define LOCALE_REGION_CO "CO" // Î÷°àÑÀÎÄ (¸çÂ×±ÈÑÇ) \r
+#define LOCALE_REGION_CR "CR" // Î÷°àÑÀÎÄ (¸ç˹´ïÀè¼Ó) \r
+#define LOCALE_REGION_CS "CS" //Serbia\r
+#define LOCALE_REGION_CY "CY" //Cyprus\r
+#define LOCALE_REGION_CZ "CZ" // ½Ý¿ËÎÄ (½Ý¿Ë¹²ºÍ¹ú)\r
+#define LOCALE_REGION_DE "DE" // µÂÎÄ (µÂ¹ú) \r
+#define LOCALE_REGION_DE_EURO "DE_EURO" // µÂÎÄ (µÂ¹ú EURO) \r
+#define LOCALE_REGION_DK "DK" // µ¤ÂóÎÄ (µ¤Âó)\r
+#define LOCALE_REGION_DO "DO" // Î÷°àÑÀÎÄ (¶àÃ×Äá¼Ó¹²ºÍ¹ú) \r
+#define LOCALE_REGION_DZ "DZ" // °¢À²®ÎÄ (°¢¶û¼°ÀûÑÇ) \r
+#define LOCALE_REGION_EC "EC" // Î÷°àÑÀÎÄ (¶ò¹Ï¶à¶û) \r
+#define LOCALE_REGION_EE "EE" // °®É³ÄáÑÇÎÄ (°®É³ÄáÑÇ)\r
+#define LOCALE_REGION_EG "EG" // °¢À²®ÎÄ (°£¼°) \r
+#define LOCALE_REGION_ES "ES" // Î÷°àÑÀÎÄ (Î÷°àÑÀ) \r
+#define LOCALE_REGION_ES_EURO "ES_EURO" // Î÷°àÑÀÎÄ (Î÷°àÑÀ EURO) \r
+#define LOCALE_REGION_FI "FI" // ·ÒÀ¼ÎÄ (·ÒÀ¼) \r
+#define LOCALE_REGION_FI_EURO "FI_EURO" // ·ÒÀ¼ÎÄ (·ÒÀ¼ EURO)\r
+#define LOCALE_REGION_FR "FR" // ·¨ÎÄ (·¨¹ú) \r
+#define LOCALE_REGION_FR_EURO "FR_EURO" // ·¨ÎÄ (·¨¹ú EURO) \r
+#define LOCALE_REGION_GB "GB" // Ó¢ÎÄ (Ó¢¹ú) \r
+#define LOCALE_REGION_GE "GE" //Georgia\r
+#define LOCALE_REGION_GR "GR" // Ï£À°ÎÄ (Ï£À°) \r
+#define LOCALE_REGION_GT "GT" // Î÷°àÑÀÎÄ (ΣµØÂíÀ) \r
+#define LOCALE_REGION_HK "HK" // ÖÐÎÄ (Ïã¸Û) \r
+#define LOCALE_REGION_HN "HN" // Î÷°àÑÀÎÄ (ºé¶¼À˹) \r
+#define LOCALE_REGION_HR "HR" // ¿ËÂÞµØÑÇÎÄ (¿ËÂÞµØÑÇ)\r
+#define LOCALE_REGION_HT "HT" //Haiti\r
+#define LOCALE_REGION_HU "HU" // ÐÙÑÀÀûÎÄ (ÐÙÑÀÀû)\r
+#define LOCALE_REGION_ID "ID" //Indonesia\r
+#define LOCALE_REGION_IE "IE" // Ó¢ÎÄ (°®¶ûÀ¼) \r
+#define LOCALE_REGION_IE_EURO "IE_EURO" // Ó¢ÎÄ (°®¶ûÀ¼ EURO) \r
+#define LOCALE_REGION_IL "IL" // Ï£²®À´ÎÄ (ÒÔÉ«ÁÐ)\r
+#define LOCALE_REGION_IN "IN" //India\r
+#define LOCALE_REGION_IQ "IQ" // °¢À²®ÎÄ (ÒÁÀ¿Ë) \r
+#define LOCALE_REGION_IS "IS" // ±ùµºÎÄ (±ùµº)\r
+#define LOCALE_REGION_IT "IT" // Òâ´óÀûÎÄ (Òâ´óÀû) \r
+#define LOCALE_REGION_IT_EURO "IT_EURO" // Òâ´óÀûÎÄ (Òâ´óÀû EURO)\r
+#define LOCALE_REGION_JM "JM" //Jamaica\r
+#define LOCALE_REGION_JO "JO" // °¢À²®ÎÄ (Ô¼µ©) \r
+#define LOCALE_REGION_JP "JP" // ÈÕÎÄ (ÈÕ±¾)\r
+#define LOCALE_REGION_KE "KE" //Kenya\r
+#define LOCALE_REGION_KR "KR" // ³¯ÏÊÎÄ (Äϳ¯ÏÊ)\r
+#define LOCALE_REGION_KW "KW" // °¢À²®ÎÄ (¿ÆÍþÌØ) \r
+#define LOCALE_REGION_KZ "KZ" //Kazakhstan\r
+#define LOCALE_REGION_LB "LB" // °¢À²®ÎÄ (Àè°ÍÄÛ) \r
+#define LOCALE_REGION_LK "LK" //Sri Lanka\r
+#define LOCALE_REGION_LT "LT" // Á¢ÌÕÍðÎÄ (Á¢ÌÕÍð)\r
+#define LOCALE_REGION_LU "LU" // µÂÎÄ (¬ɱ¤) \r
+#define LOCALE_REGION_LU_EURO "LU_EURO" // µÂÎÄ (¬ɱ¤ EURO)\r
+#define LOCALE_REGION_LV "LV" // ÀÍÐάÑÇÎÄ(ÁÐÍÐ) (ÀÍÑάÑÇ)\r
+#define LOCALE_REGION_LY "LY" // °¢À²®ÎÄ (Àû±ÈÑÇ) \r
+#define LOCALE_REGION_MA "MA" // °¢À²®ÎÄ (ĦÂå¸ç) \r
+#define LOCALE_REGION_MD "MD" //Moldova\r
+#define LOCALE_REGION_MK "MK" // ÂíÆä¶ÙÎÄ (ÂíÆä¶ÙÍõ¹ú)\r
+#define LOCALE_REGION_MX "MX" // Î÷°àÑÀÎÄ (Ä«Î÷¸ç) \r
+#define LOCALE_REGION_MY "MY" //Malaysia\r
+#define LOCALE_REGION_NG "NG" //Nigeria\r
+#define LOCALE_REGION_NI "NI" // Î÷°àÑÀÎÄ (Äá¼ÓÀ¹Ï) \r
+#define LOCALE_REGION_NL "NL" // ºÉÀ¼ÎÄ (ºÉÀ¼) \r
+#define LOCALE_REGION_NL_EURO "NL_EURO " // ºÉÀ¼ÎÄ (ºÉÀ¼ EURO)\r
+#define LOCALE_REGION_NO "NO" // ŲÍþÎÄ (ŲÍþ) \r
+#define LOCALE_REGION_NP "NP" //Nepal\r
+#define LOCALE_REGION_NY "NO_NY" // ŲÍþÎÄ (ŲÍþ NYNORSK)\r
+#define LOCALE_REGION_NZ "NZ" // Ó¢ÎÄ (ÐÂÎ÷À¼) \r
+#define LOCALE_REGION_OM "QM" // °¢À²®ÎÄ (°¢Âü) \r
+#define LOCALE_REGION_PA "PA" // Î÷°àÑÀÎÄ (°ÍÄÃÂí) \r
+#define LOCALE_REGION_PE "PE" // Î÷°àÑÀÎÄ (Ãس) \r
+#define LOCALE_REGION_PH "PH" //Philippines\r
+#define LOCALE_REGION_PK "PK" //Pakistan\r
+#define LOCALE_REGION_PL "PL" // ²¨À¼ÎÄ (²¨À¼) \r
+#define LOCALE_REGION_PR "PR" // Î÷°àÑÀÎÄ (²¨¶àÀè¸ç) \r
+#define LOCALE_REGION_PT "PT" // ÆÏÌÑÑÀÎÄ (ÆÏÌÑÑÀ) \r
+#define LOCALE_REGION_PT_EURO "PT_EURO" // ÆÏÌÑÑÀÎÄ (ÆÏÌÑÑÀ EURO)\r
+#define LOCALE_REGION_PY "PY" // Î÷°àÑÀÎÄ (°ÍÀ¹ç) \r
+#define LOCALE_REGION_QA "QA" // °¢À²®ÎÄ (¿¨Ëþ¶û) \r
+#define LOCALE_REGION_RO "RO" // ÂÞÂíÄáÑÇÎÄ (ÂÞÂíÄáÑÇ) \r
+#define LOCALE_REGION_RU "RU" // ¶íÎÄ (¶íÂÞ˹)\r
+#define LOCALE_REGION_SA "SA" // °¢À²®ÎÄ (ɳÌØ°¢À²®) \r
+#define LOCALE_REGION_SD "SD" // °¢À²®ÎÄ (ËÕµ¤) \r
+#define LOCALE_REGION_SE "SE" // ÈðµäÎÄ (Èðµä)\r
+#define LOCALE_REGION_SG "SG" //Singapore\r
+#define LOCALE_REGION_SI "SI" // ˹ÂåÎÄÄáÑÇÎÄ (˹ÂåÎÄÄáÑÇ)\r
+#define LOCALE_REGION_SK "SK" // ˹Âå·¥¿ËÎÄ (˹Âå·¥¿Ë)\r
+#define LOCALE_REGION_SV "SV" // Î÷°àÑÀÎÄ (Èø¶ûÍ߶à) \r
+#define LOCALE_REGION_SY "SY" // °¢À²®ÎÄ (ÐðÀûÑÇ) \r
+#define LOCALE_REGION_TH "TH" // Ì©ÎÄ (Ì©¹ú)\r
+#define LOCALE_REGION_TM "TM" //Turkmenistan\r
+#define LOCALE_REGION_TN "TN" // °¢À²®ÎÄ (Í»Äá˹) \r
+#define LOCALE_REGION_TR "TR" // ÍÁ¶úÆäÎÄ (ÍÁ¶úÆä) \r
+#define LOCALE_REGION_TT "TT" //Trinidad Tobago\r
+#define LOCALE_REGION_TW "TW" // ÖÐÎÄ (̨Íå)\r
+#define LOCALE_REGION_UA "UA" // ÎÚ¿ËÀ¼ÎÄ (ÎÚ¿ËÀ¼)\r
+#define LOCALE_REGION_UG "UG" //Uganda\r
+#define LOCALE_REGION_US "US" // Ó¢ÎÄ (ÃÀ¹ú)\r
+#define LOCALE_REGION_UY "UY" // Î÷°àÑÀÎÄ (ÎÚÀ¹ç) \r
+#define LOCALE_REGION_UZ "UZ" //Uzbekistan\r
+#define LOCALE_REGION_VE "VE" // Î÷°àÑÀÎÄ (ίÄÚÈðÀ) \r
+#define LOCALE_REGION_VN "VN" //Vietnam\r
+#define LOCALE_REGION_YE "YE" // °¢À²®ÎÄ (Ò²ÃÅ)\r
+#define LOCALE_REGION_YU "YU" // Èû¶ûάÑÇÎÄ (ÄÏ˹À·ò)\r
+#define LOCALE_REGION_ZA "ZA" // Ó¢ÎÄ (ÄÏ·Ç)\r
+\r
+\r
+#define TIME_ZONE_MARSHALL_ISLANDS "Pacific/Majuro"\r
+#define TIME_ZONE_MIDWAY_ISLAND "Pacific/Midway"\r
+#define TIME_ZONE_HAWAII "Pacific/Honolulu"\r
+#define TIME_ZONE_ALASKA "America/Anchorage"\r
+#define TIME_ZONE_PACIFIC_TIME "America/Los_Angeles"\r
+#define TIME_ZONE_TIJUANA "America/Tijuana" \r
+#define TIME_ZONE_ARIZONA "America/Phoenix" \r
+#define TIME_ZONE_CHIHUAHUA "America/Chihuahua" \r
+#define TIME_ZONE_MOUNTAIN_TIME "America/Denver" \r
+#define TIME_ZONE_CENTRAL_AMERICA "America/Costa_Rica" \r
+#define TIME_ZONE_CENTRAL_TIME "America/Chicago" \r
+#define TIME_ZONE_MEXICO_CITY "America/Mexico_City" \r
+#define TIME_ZONE_SASKATCHEWAN "America/Regina" \r
+#define TIME_ZONE_BOGOTA "America/Bogota" \r
+#define TIME_ZONE_EASTERN_TIME "America/New_York" \r
+#define TIME_ZONE_VENEZUELA "America/Caracas" \r
+#define TIME_ZONE_ATLANTIC_TIME_BARBADOS "America/Barbados" \r
+#define TIME_ZONE_ATLANTIC_TIME_CANADA "America/Halifax"\r
+#define TIME_ZONE_MANAUS "America/Manaus"\r
+#define TIME_ZONE_SANTIAGO "America/Santiago"\r
+#define TIME_ZONE_NEWFOUNDLAND "America/St_Johns"\r
+#define TIME_ZONE_BRASILIA "America/Sao_Paulo"\r
+#define TIME_ZONE_BUENOS_AIRES "America/Argentina/Buenos_Aires"\r
+#define TIME_ZONE_GREENLAND "America/Godthab"\r
+#define TIME_ZONE_MONTEVIDEO "America/Montevideo"\r
+#define TIME_ZONE_MID_ATLANTIC "Atlantic/South_Georgia"\r
+#define TIME_ZONE_AZORES "Atlantic/Azores"\r
+#define TIME_ZONE_CAPE_VERDE_ISLANDS "Atlantic/Cape_Verde"\r
+#define TIME_ZONE_CASABLANCA "Africa/Casablanca"\r
+#define TIME_ZONE_LONDON_DUBLIN "Europe/London"\r
+#define TIME_ZONE_AMSTERDAM_BERLIN "Europe/Amsterdam" \r
+#define TIME_ZONE_BELGRADE "Europe/Belgrade"\r
+#define TIME_ZONE_BRUSSELS "Europe/Brussels"\r
+#define TIME_ZONE_SARAJEVO "Europe/Sarajevo"\r
+#define TIME_ZONE_WINDHOEK "Africa/Windhoek"\r
+#define TIME_ZONE_W_AFRICA_TIME "Africa/Brazzaville"\r
+#define TIME_ZONE_AMMAN_JORDAN "Asia/Amman"\r
+#define TIME_ZONE_ATHENS_ISTANBUL "Europe/Athens"\r
+#define TIME_ZONE_BEIRUT_LEBANON "Asia/Beirut"\r
+#define TIME_ZONE_CAIRO "Africa/Cairo"\r
+#define TIME_ZONE_HELSINKI "Europe/Helsinki"\r
+#define TIME_ZONE_JERUSALEM "Asia/Jerusalem"\r
+#define TIME_ZONE_MINSK "Europe/Minsk"\r
+#define TIME_ZONE_HARARE "Africa/Harare"\r
+#define TIME_ZONE_BAGHDAD "Asia/Baghdad"\r
+#define TIME_ZONE_MOSCOW "Europe/Moscow"\r
+#define TIME_ZONE_KUWAIT "Asia/Kuwait"\r
+#define TIME_ZONE_NAIROBI "Africa/Nairobi"\r
+#define TIME_ZONE_TEHRAN "Asia/Tehran"\r
+#define TIME_ZONE_BAKU "Asia/Baku"\r
+#define TIME_ZONE_TBILISI "Asia/Tbilisi"\r
+#define TIME_ZONE_YEREVAN "Asia/Yerevan"\r
+#define TIME_ZONE_DUBAI "Asia/Dubai"\r
+#define TIME_ZONE_KABUL "Asia/Kabul"\r
+#define TIME_ZONE_ISLAMABAD_KARACHI "Asia/Karachi"\r
+#define TIME_ZONE_URAL_SK "Asia/Oral"\r
+#define TIME_ZONE_YEKATERINBURG "Asia/Yekaterinburg"\r
+#define TIME_ZONE_KOLKATA "Asia/Calcutta"\r
+#define TIME_ZONE_SRI_LANKA "Asia/Colombo"\r
+#define TIME_ZONE_KATHMANDU "Asia/Katmandu"\r
+#define TIME_ZONE_ASTANA "Asia/Almaty"\r
+#define TIME_ZONE_YANGON "Asia/Rangoon"\r
+#define TIME_ZONE_KRASNOYARSK "Asia/Krasnoyarsk"\r
+#define TIME_ZONE_BANGKOK "Asia/Bangkok"\r
+#define TIME_ZONE_BEIJING "Asia/Shanghai"\r
+#define TIME_ZONE_HONG_KONG "Asia/Hong_Kong"\r
+#define TIME_ZONE_IRKUTSK "Asia/Irkutsk"\r
+#define TIME_ZONE_KUALA_LUMPUR "Asia/Kuala_Lumpur"\r
+#define TIME_ZONE_PERTH "Australia/Perth"\r
+#define TIME_ZONE_TAIPEI "Asia/Taipei"\r
+#define TIME_ZONE_SEOUL "Asia/Seoul"\r
+#define TIME_ZONE_TOKYO_OSAKA "Asia/Tokyo"\r
+#define TIME_ZONE_YAKUTSK "Asia/Yakutsk"\r
+#define TIME_ZONE_ADELAIDE "Australia/Adelaide"\r
+#define TIME_ZONE_DARWIN "Australia/Darwin"\r
+#define TIME_ZONE_BRISBANE "Australia/Brisbane"\r
+#define TIME_ZONE_HOBART "Australia/Hobart"\r
+#define TIME_ZONE_SYDNEY_CANBERRA "Australia/Sydney"\r
+#define TIME_ZONE_VLADIVOSTOK "Asia/Vladivostok"\r
+#define TIME_ZONE_GUAM "Pacific/Guam"\r
+#define TIME_ZONE_MAGADAN "Asia/Magadan"\r
+#define TIME_ZONE_AUCKLAND "Pacific/Auckland"\r
+#define TIME_ZONE_FIJI "Pacific/Fiji"\r
+#define TIME_ZONE_TONGA "Pacific/Tongatapu"\r
+\r
+\r
+enum xml_gms_id{\r
+ GMS_ID_SEARCH,\r
+ GMS_ID_SEARCH_BY_VOICE,\r
+ GMS_ID_GMAIL,\r
+ GMS_ID_CONTACT_SYNC,\r
+ GMS_ID_CALENDAR_SYNC,\r
+ GMS_ID_TALK,\r
+ GMS_ID_CHROME,\r
+ GMS_ID_GOOGLES,\r
+ GMS_ID_MAPS,\r
+ GMS_ID_STREET_VIEW,\r
+ GMS_ID_YOUTUBE,\r
+ GMS_ID_GOOGLE_PLAY_STORE,\r
+ GMS_ID_GOOGLE_PLAY_BOOKS,\r
+ GMS_ID_GOOGLE_PLAY_MOVIES,\r
+ GMS_ID_GOOGLE_PLAY_MAGAZINES,\r
+ GMS_ID_GOOGLE_PLAY_MUSIC,\r
+ //GMS_ID_WIDEVINE,\r
+ GMS_ID_FACELOCK,\r
+ GMS_ID_GOOGLE_TTS,\r
+ //GMS_ID_GOOGLE_VOICE,\r
+ //GMS_ID_GOGGLES,\r
+ //GMS_ID_EARTH,\r
+ //GMS_ID_ORKUT,\r
+ //GMS_ID_DOCS_DRIVE,\r
+ GMS_ID_NEWS_WEATHER,\r
+ //GMS_ID_SHOPPER,\r
+ //GMS_ID_BLOGGER,\r
+ //GMS_ID_CURRENTS,\r
+ //GMS_ID_KEEP,\r
+ //GMS_ID_TRANSLATE,\r
+ //GMS_ID_KOREAN_IME,\r
+ //GMS_ID_PINYIN_IME,\r
+ GMS_ID_NUMS,\r
+};\r
+\r
+\r
+struct xml_gms_name{\r
+ int gms_id;\r
+ char gms_name[48];\r
+};\r
+\r
+\r
+static struct xml_gms_name gms_name[GMS_ID_NUMS] = \r
+{\r
+ {GMS_ID_SEARCH, "QuickSearchBox.apk"},\r
+ {GMS_ID_SEARCH_BY_VOICE, "VoiceSearchStub.apk"},\r
+ {GMS_ID_GMAIL, "Gmail2.apk"},\r
+ {GMS_ID_CONTACT_SYNC, "GoogleContactsSyncAdapter.apk"},\r
+ {GMS_ID_CALENDAR_SYNC, "GoogleCalendarSyncAdapter.apk"},\r
+ {GMS_ID_TALK, "Talk.apk"},\r
+ {GMS_ID_CHROME, "Chrome.apk"},\r
+ {GMS_ID_GOOGLES, "PlusOne.apk"},\r
+ {GMS_ID_MAPS, "GMS_Maps.apk"},\r
+ {GMS_ID_STREET_VIEW, "Street.apk"},\r
+ {GMS_ID_YOUTUBE, "YouTube.apk"},\r
+ {GMS_ID_GOOGLE_PLAY_STORE, "Phonesky.apk"},\r
+ {GMS_ID_GOOGLE_PLAY_BOOKS, "Books.apk"},\r
+ {GMS_ID_GOOGLE_PLAY_MOVIES, "Videos.apk"},\r
+ {GMS_ID_GOOGLE_PLAY_MAGAZINES, "Magazines.apk"},\r
+ {GMS_ID_GOOGLE_PLAY_MUSIC, "Music.apk"},\r
+ //{GMS_ID_WIDEVINE, ""},\r
+ {GMS_ID_FACELOCK, "FaceLock.apk"},\r
+ {GMS_ID_GOOGLE_TTS, "PicoTts.apk"},\r
+ //{GMS_ID_GOOGLE_VOICE, "Velvet.apk"},//?\r
+ //{GMS_ID_GOGGLES, "Velvet.apk"},//?\r
+ //{GMS_ID_EARTH, "Velvet.apk"},\r
+ //{GMS_ID_ORKUT, "Velvet.apk"},\r
+ //{GMS_ID_DOCS_DRIVE, "Velvet.apk"},\r
+ {GMS_ID_NEWS_WEATHER, "GenieWidget.apk"},\r
+ //{GMS_ID_SHOPPER, "Velvet.apk"},\r
+ //{GMS_ID_BLOGGER, "Velvet.apk"},\r
+ //{GMS_ID_CURRENTS, "Velvet.apk"},\r
+ //{GMS_ID_KEEP, "Velvet.apk"},\r
+ //{GMS_ID_TRANSLATE, "Velvet.apk"},\r
+ //{GMS_ID_KOREAN_IME, "Velvet.apk"},\r
+ //{GMS_ID_PINYIN_IME, "PinyinIME.apk"},\r
+};\r
+\r
+\r
+\r
+struct auto_xml_config{\r
+ int area_id;\r
+ int gms_flag[GMS_ID_NUMS];\r
+};\r
+\r
+\r
+static struct auto_xml_config xml_config[AREA_ID_NUMS] = {\r
+ {AREA_ID_NULL, {1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},\r
+ {AREA_ID_ALBANIA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_ALGERIA,{0,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_ANGOLA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_ARGENTINA,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_AUSTRALIA,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},\r
+ {AREA_ID_AUSTRIA,{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0}},\r
+ {AREA_ID_AZERBAIJAN,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_BAHRAIN,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_BANGLADESH,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_BARBADOS,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_BELARUS,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_BELGIUM,{0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0}},\r
+ {AREA_ID_BOLIVIA,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_BOSNIA_AND_HERZEGOVINA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_BOTSWANA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_BRAZIL,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0}},\r
+ {AREA_ID_BULGARIA,{0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_CANADA,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0}},\r
+ {AREA_ID_CHILE,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_CHINA,{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_COLOMBIA,{0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_COTE_D_IVOIRE,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_CROATIA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_CYPRUS,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_CZECH_REPUBLIC,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_DENMARK,{0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_ECUADOR,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_EGYPT,{0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_ESTONIA,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_FINLAND,{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_FRANCE_INC_GUADELOUPE,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0}},\r
+ {AREA_ID_GEORGIA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_GERMANY,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}},\r
+ {AREA_ID_GREECE,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_HAITI,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_HONDURAS,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_HONG_KONG,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_HUNGARY,{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_ICELAND,{0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_INDIA,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0}},\r
+ {AREA_ID_INDONESIA,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0}},\r
+ {AREA_ID_IRELAND,{0,1,0,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0}},\r
+ {AREA_ID_ISRAEL,{0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,0}},\r
+ {AREA_ID_ITALY,{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0}},\r
+ {AREA_ID_JAMAICA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_JAPAN,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0}},\r
+ {AREA_ID_JORDAN,{0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_KAZAKHSTAN,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_KENYA,{0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_KOREA_SOUTH,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0}},\r
+ {AREA_ID_KUWAIT,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_LATVIA,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_LEBANON,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,0}},\r
+ {AREA_ID_LITHUANIA,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_LUXEMBOURG,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1}},\r
+ {AREA_ID_MACEDONIA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_MALAYSIA,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,0}},\r
+ {AREA_ID_MEXICO,{0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0}},\r
+ {AREA_ID_MOLDOVA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_MOROCCO,{0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_NEPAL,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_NETHERLAND_ANTILLES,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_NETHERLANDS_INC_BONAIRE,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0}},\r
+ {AREA_ID_NEW_ZEALAND,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0}},\r
+ {AREA_ID_NIGERIA,{0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_NORWAY,{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_OMAN,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_PAKISTAN,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_PARAGUAY,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_PERU,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_PHILIPPINES,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_POLAND,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_PORTUGAL,{0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0}},\r
+ {AREA_ID_QATAR,{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_ROMANIA,{0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_RUSSIA,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0}},\r
+ {AREA_ID_SAUDI_ARABIA,{0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,0}},\r
+ {AREA_ID_SERBIA,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_SINGAPORE,{0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_SLOVAKIA,{0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_SLOVENIA,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_SOUTH_AFRICA,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_SPAIN,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0}},\r
+ {AREA_ID_SRI_LANKA,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_SWEDEN,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_SWITZERLAND,{0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_TAIWAN,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0}},\r
+ {AREA_ID_THAILAND,{0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,1,1}},\r
+ {AREA_ID_TRINIDAD_TOBAGO,{0,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_TUNISIA,{0,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_TURKEY,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_TURKMENISTAN,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_UGANDA,{0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_UKRAINE,{0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,1,0}},\r
+ {AREA_ID_UNITED_KINGDOM,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},\r
+ {AREA_ID_UNITED_STATES,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},\r
+ {AREA_ID_URUGUAY,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_UZBEKISTAN,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1}},\r
+ {AREA_ID_VENEZUELA,{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_VIETNAM,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0}},\r
+ {AREA_ID_NORDICS,{0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_BALTIC,{0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_CZECH_SLOVAKIA,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_CROATIA_SLOVENIA,{0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_LA_GROUP,{0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_UNITED_ARAB_EMIRATES,{0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_EMAT_UK,{0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0}},\r
+ {AREA_ID_EMAT_FR,{0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,1}},\r
+ {AREA_ID_EMAT_PO,{0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1}},\r
+ {AREA_ID_INDIA_HI,{0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0}},\r
+ {AREA_ID_UAE_EN,{0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,0,0}},\r
+ {AREA_ID_ISRAEL_AR,{0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,0}},\r
+ {AREA_ID_NETHERLANDS_INC_BONAIRE_ENUS,{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0}},\r
+};\r
+\r
+\r
+struct area_id_name{\r
+ int type;\r
+ int id;\r
+ char country_area[32]; //country or area name such as china\r
+ char locale_language[4]; //locale language name such as zh\r
+ char locale_region[8]; //locale region name such as CN\r
+ char country_geo[20]; //country geographical position such as asia \r
+ char timezone[32]; //time zone such as Asia/Shanghai\r
+ char user_define[20]; //user-defined name such as A10,A12,A13 \r
+};\r
+\r
+\r
+struct operator_id_name{\r
+ int type; //type\r
+ int id; \r
+ char operator_name[20]; //operator name such as CHINA MOBILE\r
+ char locale_region[8]; //area name such as CN\r
+};\r
+\r
+struct reserve_id_name{\r
+ int type; //type\r
+ int id; \r
+ char reserve_name[20]; //reserve name \r
+ char locale_region[20]; \r
+};\r
+\r
+\r
+struct device_id_name{\r
+ char type; //device type\r
+ char id; //board id\r
+ char type_name[14];\r
+ char driver_name[16];\r
+ char dev_name[16]; //name\r
+ char description[30]; // description\r
+ unsigned short device_id;//device_id and only one\r
+ //short select; // 1:device is selected 0:not\r
+};\r
+\r
+struct board_id_flag{ \r
+ atomic_t debug_flag; \r
+};\r
+\r
+\r
+\r
+enum I2C_BUS_NUM{\r
+ BUS_NUM_I2C_0,\r
+ BUS_NUM_I2C_1,\r
+ BUS_NUM_I2C_2,\r
+ BUS_NUM_I2C_3,\r
+ BUS_NUM_I2C_4,\r
+ BUS_NUM_I2C_GPIO,\r
+ BUS_NUM_I2C_MAX,\r
+};\r
+\r
+\r
+enum {\r
+ BUS_NUM_SPI_0,\r
+ BUS_NUM_SPI_1,\r
+ BUS_NUM_SPI_MAX,\r
+};\r
+\r
+\r
+enum board_device_type{\r
+ BOARD_DEVICE_TYPE_VALID,\r
+ BOARD_DEVICE_TYPE_INVALID,\r
+ BOARD_DEVICE_TYPE_I2C, \r
+ BOARD_DEVICE_TYPE_SPI,\r
+ BOARD_DEVICE_TYPE_PLATFORM, \r
+ BOARD_DEVICE_TYPE_NUMS,\r
+};\r
+\r
+struct valid_invalid_name{\r
+ char name[32];\r
+};\r
+\r
+\r
+struct board_device_table{\r
+ void *addr;\r
+ int size;\r
+ int type;\r
+ int bus;\r
+};\r
+\r
+\r
+#include <linux/board-id-operator.h>\r
+\r
+struct board_id_private_data{ \r
+ struct device *dev; \r
+ struct mutex operation_mutex;\r
+ struct area_id_name area_area_id_name[AREA_ID_NUMS];\r
+ struct operator_id_name area_operator_id_name[OPERATOR_ID_NUMS];\r
+ struct reserve_id_name area_reserve_id_name[RESERVE_ID_NUMS];\r
+ struct area_id_name area_select; \r
+ struct operator_id_name operator_select; \r
+ struct reserve_id_name reserve_select;\r
+ \r
+ struct device_id_name tp_id_name[TP_ID_NUMS];\r
+ struct device_id_name lcd_id_name[LCD_ID_NUMS];\r
+ struct device_id_name key_id_name[KEY_ID_NUMS];\r
+ struct device_id_name codec_id_name[CODEC_ID_NUMS];\r
+ struct device_id_name wifi_id_name[WIFI_ID_NUMS];\r
+ struct device_id_name bt_id_name[BT_ID_NUMS];\r
+ struct device_id_name gps_id_name[GPS_ID_NUMS];\r
+ struct device_id_name fm_id_name[FM_ID_NUMS];\r
+ struct device_id_name modem_id_name[MODEM_ID_NUMS]; \r
+ struct device_id_name ddr_id_name[DDR_ID_NUMS];\r
+ struct device_id_name flash_id_name[FLASH_ID_NUMS];\r
+ struct device_id_name hdmi_id_name[HDMI_ID_NUMS];\r
+ struct device_id_name battery_id_name[BATTERY_ID_NUMS];\r
+ struct device_id_name charge_id_name[CHARGE_ID_NUMS];\r
+ struct device_id_name backlight_id_name[BACKLIGHT_ID_NUMS];\r
+ struct device_id_name headset_id_name[HEADSET_ID_NUMS];\r
+ struct device_id_name micphone_id_name[MICPHONE_ID_NUMS];\r
+ struct device_id_name speaker_id_name[SPEAKER_ID_NUMS];\r
+ struct device_id_name vibrator_id_name[VIBRATOR_ID_NUMS];\r
+ struct device_id_name tv_id_name[TV_ID_NUMS];\r
+ struct device_id_name echip_id_name[ECHIP_ID_NUMS]; \r
+ struct device_id_name hub_id_name[HUB_ID_NUMS]; \r
+ struct device_id_name tpad_id_name[TPAD_ID_NUMS];\r
+ \r
+ struct device_id_name pmic_id_name[PMIC_ID_NUMS];\r
+ struct device_id_name regulator_id_name[REGULATOR_ID_NUMS];\r
+ struct device_id_name rtc_id_name[RTC_ID_NUMS];\r
+ struct device_id_name camera_front_id_name[CAMERA_FRONT_ID_NUMS];\r
+ struct device_id_name camera_back_id_name[CAMERA_BACK_ID_NUMS]; \r
+ struct device_id_name sensor_angle_id_name[ANGLE_ID_NUMS];\r
+ struct device_id_name sensor_accel_id_name[ACCEL_ID_NUMS];\r
+ struct device_id_name sensor_compass_id_name[COMPASS_ID_NUMS];\r
+ struct device_id_name sensor_gyroscope_id_name[GYRO_ID_NUMS];\r
+ struct device_id_name sensor_light_id_name[LIGHT_ID_NUMS];\r
+ struct device_id_name sensor_proximity_id_name[PROXIMITY_ID_NUMS];\r
+ struct device_id_name sensor_temperature_id_name[TEMPERATURE_ID_NUMS]; \r
+ struct device_id_name sensor_pressure_id_name[PRESSURE_ID_NUMS];\r
+ struct device_id_name device_selected[DEVICE_NUM_TYPES];\r
+\r
+ \r
+ struct device_id_name *device_start_addr[DEVICE_NUM_TYPES]; \r
+ char device_num_max[DEVICE_NUM_TYPES];\r
+ \r
+ struct board_id_flag flags;\r
+ struct file_operations id_fops;\r
+ struct miscdevice id_miscdev;\r
+ struct board_id_platform_data *pdata;\r
+ \r
+ //for debug\r
+ struct file* board_id_data_filp;\r
+ mm_segment_t board_id_data_fs;\r
+ struct file* board_id_area_filp;\r
+ mm_segment_t board_id_area_fs;\r
+ struct file* board_id_device_filp;\r
+ mm_segment_t board_id_device_fs;\r
+\r
+ char vendor_data[DEVICE_NUM_TYPES];\r
+ \r
+};\r
+\r
+\r
+extern char board_id_get(enum type_devices type);\r
+extern int board_id_get_from_flash(char *pbuf, int type);\r
+\r
+\r
+#if 1\r
+#define DBG_ID(x...) if(g_board_id && (atomic_read(&g_board_id->flags.debug_flag) == 1)) printk(x)\r
+#else\r
+#define DBG_ID(x...)\r
+#endif\r
+\r
+\r
+#define BOARD_ID_IOCTL_BASE 'b'\r
+\r
+//#define BOARD_ID_IOCTL_READ_ALL _IOWR(BOARD_ID_IOCTL_BASE, 0x00, struct board_id_private_data)\r
+//#define BOARD_ID_IOCTL_WRITE_ALL _IOWR(BOARD_ID_IOCTL_BASE, 0x30, struct board_id_private_data)\r
+\r
+\r
+#define BOARD_ID_IOCTL_READ_AREA_ID _IOR(BOARD_ID_IOCTL_BASE, 0x80, struct area_id_name)\r
+#define BOARD_ID_IOCTL_READ_OPERATOR_ID _IOR(BOARD_ID_IOCTL_BASE, 0x81, struct operator_id_name)\r
+#define BOARD_ID_IOCTL_READ_RESERVE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x82, struct reserve_id_name)\r
+\r
+#define BOARD_ID_IOCTL_READ_AREA_NAME_BY_ID _IOWR(BOARD_ID_IOCTL_BASE, 0x70, struct area_id_name)\r
+#define BOARD_ID_IOCTL_READ_OPERATOR_NAME_BY_ID _IOWR(BOARD_ID_IOCTL_BASE, 0x71, struct operator_id_name)\r
+#define BOARD_ID_IOCTL_READ_RESERVE_NAME_BY_ID _IOWR(BOARD_ID_IOCTL_BASE, 0x72, struct reserve_id_name)\r
+#define BOARD_ID_IOCTL_READ_DEVICE_NAME_BY_ID _IOWR(BOARD_ID_IOCTL_BASE, 0x73, struct device_id_name)\r
+\r
+\r
+\r
+#define BOARD_ID_IOCTL_READ_TP_ID _IOR(BOARD_ID_IOCTL_BASE, 0x01, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_LCD_ID _IOR(BOARD_ID_IOCTL_BASE, 0x02, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_KEY_ID _IOR(BOARD_ID_IOCTL_BASE, 0x03, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_CODEC_ID _IOR(BOARD_ID_IOCTL_BASE, 0x04, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_WIFI_ID _IOR(BOARD_ID_IOCTL_BASE, 0x05, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_BT_ID _IOR(BOARD_ID_IOCTL_BASE, 0x06, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_GPS_ID _IOR(BOARD_ID_IOCTL_BASE, 0x07, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_FM_ID _IOR(BOARD_ID_IOCTL_BASE, 0x08, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_MODEM_ID _IOR(BOARD_ID_IOCTL_BASE, 0x09, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_DDR_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0a, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_FLASH_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0b, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_HDMI_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0c, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_BATTERY_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0d, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_CHARGE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0e, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_BACKLIGHT_ID _IOR(BOARD_ID_IOCTL_BASE, 0x0f, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_HEADSET_ID _IOR(BOARD_ID_IOCTL_BASE, 0x10, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_MICPHONE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x11, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SPEAKER_ID _IOR(BOARD_ID_IOCTL_BASE, 0x12, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_VIBRATOR_ID _IOR(BOARD_ID_IOCTL_BASE, 0x13, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_TV_ID _IOR(BOARD_ID_IOCTL_BASE, 0x14, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_ECHIP_ID _IOR(BOARD_ID_IOCTL_BASE, 0x15, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_HUB_ID _IOR(BOARD_ID_IOCTL_BASE, 0x16, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_TPAD_ID _IOR(BOARD_ID_IOCTL_BASE, 0x17, struct device_id_name)\r
+\r
+\r
+#define BOARD_ID_IOCTL_READ_PMIC_ID _IOR(BOARD_ID_IOCTL_BASE, 0x20, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_REGULATOR_ID _IOR(BOARD_ID_IOCTL_BASE, 0x21, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_RTC_ID _IOR(BOARD_ID_IOCTL_BASE, 0x22, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_CAMERA_FRONT_ID _IOR(BOARD_ID_IOCTL_BASE, 0x23, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_CAMERA_BACK_ID _IOR(BOARD_ID_IOCTL_BASE, 0x24, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_SENSOR_ANGLE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x25, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_ACCEL_ID _IOR(BOARD_ID_IOCTL_BASE, 0x26, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_COMPASS_ID _IOR(BOARD_ID_IOCTL_BASE, 0x27, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_GYRO_ID _IOR(BOARD_ID_IOCTL_BASE, 0x28, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_LIGHT_ID _IOR(BOARD_ID_IOCTL_BASE, 0x29, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_PROXIMITY_ID _IOR(BOARD_ID_IOCTL_BASE, 0x2A, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_SENSOR_TEMPERATURE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x2B, struct device_id_name) \r
+#define BOARD_ID_IOCTL_READ_SENSOR_PRESSURE_ID _IOR(BOARD_ID_IOCTL_BASE, 0x2C, struct device_id_name)\r
+\r
+\r
+#define BOARD_ID_IOCTL_WRITE_AREA_ID _IOW(BOARD_ID_IOCTL_BASE, 0x90, struct area_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_OPERATOR_ID _IOW(BOARD_ID_IOCTL_BASE, 0x91, struct operator_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_RESERVE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x92, struct reserve_id_name)\r
+\r
+\r
+#define BOARD_ID_IOCTL_WRITE_TP_ID _IOW(BOARD_ID_IOCTL_BASE, 0x31, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_LCD_ID _IOW(BOARD_ID_IOCTL_BASE, 0x32, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_KEY_ID _IOW(BOARD_ID_IOCTL_BASE, 0x33, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_CODEC_ID _IOW(BOARD_ID_IOCTL_BASE, 0x34, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_WIFI_ID _IOW(BOARD_ID_IOCTL_BASE, 0x35, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_BT_ID _IOW(BOARD_ID_IOCTL_BASE, 0x36, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_GPS_ID _IOW(BOARD_ID_IOCTL_BASE, 0x37, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_FM_ID _IOW(BOARD_ID_IOCTL_BASE, 0x38, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_MODEM_ID _IOW(BOARD_ID_IOCTL_BASE, 0x39, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_DDR_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3a, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_FLASH_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3b, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_HDMI_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3c, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_BATTERY_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3d, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_CHARGE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3e, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_BACKLIGHT_ID _IOW(BOARD_ID_IOCTL_BASE, 0x3f, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_HEADSET_ID _IOW(BOARD_ID_IOCTL_BASE, 0x40, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_MICPHONE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x41, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SPEAKER_ID _IOW(BOARD_ID_IOCTL_BASE, 0x42, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_VIBRATOR_ID _IOW(BOARD_ID_IOCTL_BASE, 0x43, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_TV_ID _IOW(BOARD_ID_IOCTL_BASE, 0x44, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_ECHIP_ID _IOW(BOARD_ID_IOCTL_BASE, 0x45, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_HUB_ID _IOW(BOARD_ID_IOCTL_BASE, 0x46, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_TPAD_ID _IOW(BOARD_ID_IOCTL_BASE, 0x47, struct device_id_name)\r
+\r
+#define BOARD_ID_IOCTL_WRITE_PMIC_ID _IOW(BOARD_ID_IOCTL_BASE, 0x50, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_REGULATOR_ID _IOW(BOARD_ID_IOCTL_BASE, 0x51, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_RTC_ID _IOW(BOARD_ID_IOCTL_BASE, 0x52, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_CAMERA_FRONT_ID _IOW(BOARD_ID_IOCTL_BASE, 0x53, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_CAMERA_BACK_ID _IOW(BOARD_ID_IOCTL_BASE, 0x54, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_ANGLE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x55, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_ACCEL_ID _IOW(BOARD_ID_IOCTL_BASE, 0x56, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_COMPASS_ID _IOW(BOARD_ID_IOCTL_BASE, 0x57, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_GYRO_ID _IOW(BOARD_ID_IOCTL_BASE, 0x58, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_LIGHT_ID _IOW(BOARD_ID_IOCTL_BASE, 0x59, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_PROXIMITY_ID _IOW(BOARD_ID_IOCTL_BASE, 0x5A, struct device_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_TEMPERATURE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x5B, struct device_id_name) \r
+#define BOARD_ID_IOCTL_WRITE_SENSOR_PRESSURE_ID _IOW(BOARD_ID_IOCTL_BASE, 0x5C, struct device_id_name)\r
+\r
+#define BOARD_ID_IOCTL_WRITE_AREA_FLASH _IOW(BOARD_ID_IOCTL_BASE, 0x60, struct area_id_name)\r
+#define BOARD_ID_IOCTL_WRITE_DEVICE_FLASH _IOW(BOARD_ID_IOCTL_BASE, 0x61, struct device_id_name)\r
+#define BOARD_ID_IOCTL_READ_STATUS _IOR(BOARD_ID_IOCTL_BASE, 0x62, char)\r
+#define BOARD_ID_IOCTL_READ_VENDOR_DATA _IOR(BOARD_ID_IOCTL_BASE, 0x63, char[DEVICE_NUM_TYPES])\r
+\r
+#endif\r
+\r