pure sdk for main
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#ifndef _HUGEIC_DEV_H_
|
||||
#define _HUGEIC_DEV_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct dev_obj;
|
||||
|
||||
struct devobj_ops{
|
||||
#ifdef CONFIG_SLEEP
|
||||
int32 (*suspend)(struct dev_obj *obj);
|
||||
int32 (*resume)(struct dev_obj *obj);
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifndef OS_BLKLIST
|
||||
#define OS_BLKLIST
|
||||
struct os_blklist{
|
||||
void *hdl;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct dev_obj{
|
||||
uint16 dev_id;
|
||||
uint8 busy; /* device 被使用状态,由驱动代码设置。
|
||||
有8bit可用,驱动代码根据 read/write/... 设置不同的bit位 */
|
||||
uint8 suspend: 1, /* device进入suspend状态,由dev_suspend API设置 */
|
||||
rev: 7;
|
||||
struct dev_obj *next;
|
||||
#ifdef CONFIG_SLEEP
|
||||
struct os_blklist blklist;
|
||||
#endif
|
||||
const struct devobj_ops *ops;
|
||||
};
|
||||
|
||||
#define DEV_BUSY(dev, val, set) dev_busy((struct dev_obj *)(dev), val, set)
|
||||
#define DEV_SUSPENDED(dev, suspend) dev_suspended((struct dev_obj *)(dev), suspend)
|
||||
#define HALDEV_SUSPENDED(dev) if(dev_suspended((struct dev_obj *)dev, 1)) return RET_ERR
|
||||
|
||||
/**
|
||||
* dev core module initialize
|
||||
* @return return RET_OK if initialize sucess, else return RET_ERR.
|
||||
**/
|
||||
extern int32 dev_init(void);
|
||||
|
||||
/**
|
||||
* get dev by dev_id
|
||||
* @param[in] dev_id device id
|
||||
* @return return device object if device exist, else return NULL.
|
||||
**/
|
||||
extern struct dev_obj *dev_get(int32 dev_id);
|
||||
|
||||
/*
|
||||
* set or clear device busy flag.
|
||||
*/
|
||||
extern void dev_busy(struct dev_obj *dev, uint8 busy, uint8 set);
|
||||
|
||||
/**
|
||||
* register device into dev manager.
|
||||
* @param[in] dev_id device id.
|
||||
* @param[in] device object to register.
|
||||
* @return return RET_OK if register sucess, else return RET_ERR.
|
||||
**/
|
||||
extern int32 dev_register(uint32 dev_id, struct dev_obj *device);
|
||||
|
||||
/**
|
||||
* unregister device into dev manager.
|
||||
* @param[in] device object to unregister.
|
||||
* @return return RET_OK if register sucess, else return RET_ERR.
|
||||
**/
|
||||
extern int32 dev_unregister(struct dev_obj *device);
|
||||
|
||||
/* 检查指定的device是否已经被suspend,
|
||||
参数suspend:表示如果device已经被suspend,是否suspend当前task
|
||||
*/
|
||||
int32 dev_suspended(struct dev_obj *dev, uint8 suspend);
|
||||
/**
|
||||
* device suspend when system enter sleep.
|
||||
* @param[in] dsleep sleep or deep sleep.
|
||||
* @return return RET_OK if unregister sucess, else return RET_ERR.
|
||||
**/
|
||||
extern int32 dev_suspend(uint16 type);
|
||||
extern int32 dev_suspend_hook(struct dev_obj *dev, uint16 type);
|
||||
|
||||
/**
|
||||
* device resume when system resume.
|
||||
* @return return RET_OK if unregister sucess, else return RET_ERR.
|
||||
**/
|
||||
extern int32 dev_resume(uint16 type, uint32 wkreason);
|
||||
extern int32 dev_resume_hook(struct dev_obj *dev, uint16 type, uint32 wkreason);
|
||||
|
||||
extern int32 pin_func(int32 dev_id, int32 request);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user