#endif\r
\r
\r
-\r
-\r
-\r
+#define NEWTON_GPIO_R RK29_PIN4_PB0\r
+#define NEWTON_GPIO_G RK29_PIN4_PB1\r
+#define NEWTON_GPIO_B RK29_PIN4_PB2\r
+#define NEWTON_GET_UID 0x6001\r
+typedef struct{\r
+uint16_t SN_Size; //0-1\r
+char SN[30]; //2-31\r
+char Reserved[419]; //32-450\r
+char IMEI_Size; //451\r
+char IMEI_Data[15]; //452-466\r
+char UID_Size; //467\r
+char UID_Data[30]; //468-497\r
+char BT_Size; //498\r
+char BlueTooth[6]; //499-504\r
+char Mac_Size; //505\r
+char Mac_Data[6]; //506-511\r
+}IdbSector3;\r
+static int led_state = 0;\r
+char GetSNSectorInfo(char * pbuf);\r
+\r
+int newton_print_buf(char *buf,int size)\r
+{\r
+ int i,j,mo=size%16,line = size/16;\r
+ char *pbuf = buf;\r
+\r
+ if(line>0)\r
+ {\r
+ for(i=0;i<line;i++)\r
+ {\r
+ for(j=0;j<16;j++)\r
+ {\r
+ printk("0x%02x ",*pbuf);\r
+ pbuf++;\r
+ }\r
+ printk("\n");\r
+ }\r
+ }\r
+ \r
+ for(j=0;j<mo;j++)\r
+ {\r
+ printk("0x%02x ",*pbuf);\r
+ pbuf++;\r
+ }\r
+}\r
\r
int rk29_newton_open(struct inode *inode, struct file *filp)\r
{\r
DBG("%s\n",__FUNCTION__);\r
-\r
- return 0;\r
+ return 0;\r
}\r
\r
ssize_t rk29_newton_read(struct file *filp, char __user *ptr, size_t size, loff_t *pos)\r
return sizeof(int);\r
}\r
\r
+ssize_t rk29_newton_write(struct file *filp, char __user *ptr, size_t size, loff_t *pos)\r
+{\r
+ return sizeof(int);\r
+}\r
+\r
int rk29_newton_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)\r
{\r
int ret = 0;\r
- struct rk29_newton_data *pdata ;//= pgps;\r
+ void __user *argp = (void __user *)arg;\r
DBG("%s\n",__FUNCTION__);\r
- return ret;\r
+ \r
+ switch(cmd)\r
+ {\r
+ case NEWTON_GET_UID:\r
+ {\r
+ IdbSector3 sn;\r
+ memset(&sn,0,sizeof(IdbSector3));\r
+ GetSNSectorInfo(&sn);\r
+ //newton_print_buf(&sn.UID_Data, sizeof(sn.UID_Data));\r
+ if(copy_to_user(argp, &sn.UID_Data, sizeof(sn.UID_Data))) return -EFAULT;\r
+ }\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ return 0;\r
}\r
\r
\r
static struct file_operations rk29_newton_fops = {\r
.owner = THIS_MODULE,\r
.open = rk29_newton_open,\r
- .read = rk29_newton_read,\r
+ //.read = rk29_newton_read,\r
+ //.write = rk29_newton_write,\r
.ioctl = rk29_newton_ioctl,\r
- .release = rk29_newton_release,\r
+ //.release = rk29_newton_release,\r
};\r
\r
\r
printk("rk29 newton register err!\n");\r
return ret;\r
}\r
- #if 0\r
- init_MUTEX(&pdata->power_sem);\r
- pdata->wq = create_freezeable_workqueue("rk29_gps");\r
- INIT_WORK(&pdata->work, rk29_gps_delay_power_downup);\r
- pdata->power_flag = 0;\r
-\r
- //gps power down\r
- rk29_gps_uart_to_gpio(pdata->uart_id);\r
- if (pdata->power_down)\r
- pdata->power_down();\r
- if (pdata->reset)\r
- pdata->reset(GPIO_LOW);\r
-\r
- pgps = pdata;\r
+#if 0\r
+ if(gpio_request(NEWTON_GPIO_R,NULL) != 0){\r
+ gpio_free(NEWTON_GPIO_R);\r
+ printk("rk29_newton_probe gpio_request NEWTON_GPIO_R error\n");\r
+ return -EIO;\r
+ }\r
+ \r
+ if(gpio_request(NEWTON_GPIO_G,NULL) != 0){\r
+ gpio_free(NEWTON_GPIO_G);\r
+ printk("rk29_newton_probe gpio_request NEWTON_GPIO_G error\n");\r
+ return -EIO;\r
+ }\r
+ \r
+ if(gpio_request(NEWTON_GPIO_B,NULL) != 0){\r
+ gpio_free(NEWTON_GPIO_B);\r
+ printk("rk29_newton_probe gpio_request NEWTON_GPIO_B error\n");\r
+ return -EIO;\r
+ }\r
+ \r
+ gpio_direction_output(NEWTON_GPIO_R, 0);\r
+ gpio_set_value(NEWTON_GPIO_R,GPIO_LOW);\r
+ gpio_direction_output(NEWTON_GPIO_G, 0);\r
+ gpio_set_value(NEWTON_GPIO_G,GPIO_LOW);\r
+ gpio_direction_output(NEWTON_GPIO_B, 0);\r
+ gpio_set_value(NEWTON_GPIO_B,GPIO_LOW);\r
#endif\r
-\r
DBG("%s:rk29 newton initialized\n",__FUNCTION__);\r
\r
return ret;\r