Browse Source

添加myname驱动ID获取

monkeylqd 2 weeks ago
parent
commit
467a213c4b
1 changed files with 21 additions and 0 deletions
  1. 21 0
      myname.c

+ 21 - 0
myname.c

@@ -18,6 +18,13 @@
 #define CLASS_NAME "myname_class"
 #define BUFFER_SIZE 1024
 
+
+#define SWITCH_ID0 0xFD6D0A40
+#define SWITCH_ID1 0xFD6D0A50
+#define SWITCH_ID2 0xFD6D0B20
+#define SWITCH_ID3 0xFD6D0B30
+#define SWITCH_ID4 0xFD6D0B40
+
 // 可以通过模块参数指定主设备号和次设备号
 static int myname_major = 56; // 默认主设备号
 static int myname_minor = 130;   // 默认次设备号
@@ -44,6 +51,13 @@ struct myname_dev
 
 static struct myname_dev *dev = NULL;
 
+unsigned int myname_readl(unsigned int addr)
+{
+    void __iomem *reg_base = NULL;
+    reg_base = ioremap(addr, 0x1000);
+    return readl(reg_base);
+}
+
 static void delay_work_func(struct work_struct *work)
 {    
     printk(KERN_ERR "delay_work_func\n");
@@ -177,6 +191,13 @@ int get_board_id(void)
 {
     unsigned int board_id = 0;
 
+    board_id |= (myname_readl(SWITCH_ID0)&0x02) >> 1;
+    board_id |= myname_readl(SWITCH_ID1)&0x02;
+    board_id |= (myname_readl(SWITCH_ID2)&0x02) << 1;
+    board_id |= (myname_readl(SWITCH_ID3)%0x02) << 2;
+    board_id |= (myname_readl(SWITCH_ID4)%0x02) << 3;
+    printk("board_id=%08x\n", board_id);
+
     if(board_id > 15)
     {
         printk(KERN_ERR "myname: Invalid board_id\n");