huangcm
2025-09-01 53d8e046ac1bf2ebe94f671983e3d3be059df91a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
*********************************************************************************************************
*                                                AR100 SYSTEM
*                                     AR100 Software System Develop Kits
*
*
*                                    (c) Copyright 2018-2024, Luojie China
*                                             All Rights Reserved
*
* File    : device.h
* By      : LuoJie
* Version : v1.0
* Date    : 2018-06-05 16:33
* Descript: .
* Update  :auther      ver     notes
*          Luojie      1.0     Create this file.
*********************************************************************************************************
*/
#ifndef __DEVICE_H__
#define __DEVICE_H__
 
#include "list.h"
#include "ibase.h"
 
extern struct list_head dev_list;
 
typedef struct device  arisc_device;
 
typedef struct {
   u32 hw_ver;
   int (*suspend)(struct device *dev);
   int (*resume)(struct device *dev);
   void *data;
   int (*iorequset)(u32 request,va_list argp);
//    struct device *dev;
}arisc_driver;
 
 
 
struct device {
   u32 hw_ver;
   u32 dev_id;
   u32 irq_no;
   u32 reg_base;
   u32 dev_lock;
   u32 pin_lock;
   u32 suspend_status;
   s32 (*handler)(void *parg, u32 intno);
   struct list_head list;
   arisc_driver *dri;
   void *data;
};
 
 
 
static inline s32 dev_match(arisc_device *dev, u32 reg)
{
   if(dev->hw_ver != readl(reg))
       return 0;
   else
       return 1;
}
 
#define CCMU_DEVICE_ID        1
#define PRCM_DEVICE_ID        2
#define INTC_DEVICE_ID        3
 
#define PINM_DEVICE_ID        11
#define PINL_DEVICE_ID        12
 
#define TIMER0_DEVICE_ID    21
#define TIMER1_DEVICE_ID    22
#define TIMER2_DEVICE_ID    23
#define TIMER3_DEVICE_ID    24
 
#define UART_DEVICE_ID        31
#define RSB_DEVICE_ID        32
#define PMU_DEVICE_ID        33
 
 
#define HWMSGBOX_DEVICE_ID        41
#define HWSPINLOCK_DEVICE_ID        42
 
#endif