141 lines
4.0 KiB
C
141 lines
4.0 KiB
C
|
|
/**@file otg.h
|
|||
|
|
* @brief otg驱动头文件
|
|||
|
|
* @details 结构体声明,功能函数声明
|
|||
|
|
* @author jieli
|
|||
|
|
* @date 2021-7-22
|
|||
|
|
* @version V1.0
|
|||
|
|
* @copyright Copyright(c)2010-2021 珠海市杰理科技股份有限公司
|
|||
|
|
*********************************************************************
|
|||
|
|
* @attention
|
|||
|
|
* 硬件平台:AC632N
|
|||
|
|
* SDK版本:AC632N_V1.0.0_SDK
|
|||
|
|
* @修改日志:
|
|||
|
|
* <table>
|
|||
|
|
* <tr><th>Date <th>Version <th>Author <th>Description
|
|||
|
|
* <tr><td>2021-7-22 <td>1.0 <td>jieli <td>创建初始版本
|
|||
|
|
* </table>
|
|||
|
|
*
|
|||
|
|
*********************************************************************
|
|||
|
|
*/
|
|||
|
|
#ifndef __OTG_H__
|
|||
|
|
#define __OTG_H__
|
|||
|
|
|
|||
|
|
#include "asm/usb.h"
|
|||
|
|
|
|||
|
|
/**@enum usb_hotplug.state 或 usb_hotplug.last_state
|
|||
|
|
* @brief otg当前所处模式 或 上一次所处模式
|
|||
|
|
*/
|
|||
|
|
enum {
|
|||
|
|
IDLE_MODE = 0, ///<空闲模式
|
|||
|
|
DISCONN_MODE = 1, ///<断连模式
|
|||
|
|
HOST_MODE = 2, ///<主机模式
|
|||
|
|
PRE_SLAVE_MODE, ///<成为从机模式前的一个中间模式
|
|||
|
|
SLAVE_MODE_WAIT_CONFIRMATION, ///<从机模式还需等待再次确认
|
|||
|
|
SLAVE_MODE, ///<从机模式
|
|||
|
|
CHARGE_MODE, ///<充电模式
|
|||
|
|
OTG_USER_MODE, ///<用户模式,暂时未具体定义
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**@enum 空
|
|||
|
|
* @brief otg挂起时,所选操作模式
|
|||
|
|
*/
|
|||
|
|
enum {
|
|||
|
|
OTG_OP_NULL = 0, ///< ///<空,无意义
|
|||
|
|
OTG_UNINSTALL = 1, ///<OTG卸载
|
|||
|
|
OTG_KEEP_STATE, ///<OTG保持
|
|||
|
|
OTG_SUSPEND, ///< OTG挂起
|
|||
|
|
OTG_RESUME, ///< OTG恢复
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#define OTG_HOST_MODE BIT(0)
|
|||
|
|
#define OTG_SLAVE_MODE BIT(1)
|
|||
|
|
#define OTG_CHARGE_MODE BIT(2)
|
|||
|
|
#define OTG_DET_DP_ONLY BIT(3)
|
|||
|
|
#define OTG_DET_DM_ONLY BIT(4)
|
|||
|
|
|
|||
|
|
/**@struct otg_dev_data
|
|||
|
|
* @brief otg_dev_data信息结构体 \n
|
|||
|
|
* 自定义的存储otg设备相关数据信息
|
|||
|
|
*/
|
|||
|
|
struct otg_dev_data {
|
|||
|
|
u8 usb_dev_en; ///<有哪几个otg设备使能,如USB0,USB1。
|
|||
|
|
u8 slave_online_cnt; ///<从机上线阈值
|
|||
|
|
u8 slave_offline_cnt; ///<从机下线阈值
|
|||
|
|
u8 host_online_cnt; ///<主机上线阈值
|
|||
|
|
u8 host_offline_cnt; ///<主机下线阈值
|
|||
|
|
u8 detect_mode; ///<otg可用模式配置
|
|||
|
|
u8 detect_time_interval; ///<检测时间间隔,单位 ms
|
|||
|
|
|
|||
|
|
void *otg1; //需要使用双USB口独立配置时,在板级.c文件用户自定义一个otg信息的结构体,并指向它。
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**@brief USB设备当前模式获取
|
|||
|
|
* @param[in] usb_id USB接口的id号
|
|||
|
|
* @return 函数的执行结果
|
|||
|
|
* - IDLE_MODE
|
|||
|
|
* - DISCONN_MODE
|
|||
|
|
* - HOST_MODE
|
|||
|
|
* - PRE_SLAVE_MODE
|
|||
|
|
* - SLAVE_MODE_WAIT_CONFIRMATION
|
|||
|
|
* - SLAVE_MODE
|
|||
|
|
* - CHARGE_MODE
|
|||
|
|
* - OTG_USER_MODE
|
|||
|
|
* @par 示例:
|
|||
|
|
* @code
|
|||
|
|
* usb_otg_online(0); 获取USB0当前模式
|
|||
|
|
* @encode
|
|||
|
|
*/
|
|||
|
|
u32 usb_otg_online(const usb_dev usb_id);
|
|||
|
|
// u32 usb_otg_init(u32 mode);
|
|||
|
|
|
|||
|
|
/**@brief 将DP/DM脚设为高阻
|
|||
|
|
* @param[in] usb_id USB接口的id号
|
|||
|
|
* @return 无
|
|||
|
|
* @par 示例:
|
|||
|
|
* @code
|
|||
|
|
* usb_otg_io_suspend(0); 将USB0的DP/DM脚设为高阻状态
|
|||
|
|
* @encode
|
|||
|
|
*/
|
|||
|
|
void usb_otg_io_suspend(usb_dev usb_id);
|
|||
|
|
|
|||
|
|
/**@brief 恢复DP/DM引脚的USB功能,并发起usb reset
|
|||
|
|
* @param[in] usb_id USB接口的id号
|
|||
|
|
* @return 无
|
|||
|
|
* @par 示例:
|
|||
|
|
* @code
|
|||
|
|
* usb_otg_io_resume(0); 将USB0的IO口功能恢复
|
|||
|
|
* @encode
|
|||
|
|
*/
|
|||
|
|
void usb_otg_io_resume(usb_dev usb_id);
|
|||
|
|
|
|||
|
|
/**@brief 将usb_otg设备挂起
|
|||
|
|
* @param[in] usb_id USB接口的id号
|
|||
|
|
* @param[in] op_mode 选择挂起模式
|
|||
|
|
* @ref OTG_UNINSTALL OTG卸载
|
|||
|
|
* @ref OTG_KEEP_STATE OTG保持原模式
|
|||
|
|
* @return 无
|
|||
|
|
* @par 示例:
|
|||
|
|
* @code
|
|||
|
|
* usb_otg_suspend(0,OTG_KEEP_STATE); USB0保持原来的模式
|
|||
|
|
* @encode
|
|||
|
|
*/
|
|||
|
|
void usb_otg_suspend(usb_dev usb_id, u8 op_mode);
|
|||
|
|
|
|||
|
|
/**@brief 将usb_otg设备恢复
|
|||
|
|
* @param[in] usb_id USB接口的id号
|
|||
|
|
* @return 无
|
|||
|
|
* @par 示例:
|
|||
|
|
* @code
|
|||
|
|
* usb_otg_resume(0); USB0恢复
|
|||
|
|
* @encode
|
|||
|
|
*/
|
|||
|
|
void usb_otg_resume(usb_dev usb_id);
|
|||
|
|
|
|||
|
|
void usb_otg_sof_check_register_hooks(void (*before)(), void (*after)());
|
|||
|
|
|
|||
|
|
extern const struct device_operations usb_dev_ops;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /*OTG_H*/
|