123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /**@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)
- /**@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);
- extern const struct device_operations usb_dev_ops;
- #endif /*OTG_H*/
|