11bd4fe43Sopenharmony_ci/** 21bd4fe43Sopenharmony_ci* @file hi_sdio_device.h 31bd4fe43Sopenharmony_ci* 41bd4fe43Sopenharmony_ci* Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 51bd4fe43Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 61bd4fe43Sopenharmony_ci* you may not use this file except in compliance with the License. 71bd4fe43Sopenharmony_ci* You may obtain a copy of the License at 81bd4fe43Sopenharmony_ci* 91bd4fe43Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 101bd4fe43Sopenharmony_ci* 111bd4fe43Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 121bd4fe43Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 131bd4fe43Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 141bd4fe43Sopenharmony_ci* See the License for the specific language governing permissions and 151bd4fe43Sopenharmony_ci* limitations under the License. 161bd4fe43Sopenharmony_ci* 171bd4fe43Sopenharmony_ci* Description: sdio slave mode APIs. \n 181bd4fe43Sopenharmony_ci* Create: 2019-01-17 191bd4fe43Sopenharmony_ci*/ 201bd4fe43Sopenharmony_ci 211bd4fe43Sopenharmony_ci/** 221bd4fe43Sopenharmony_ci * @defgroup iot_sdio SDIO Slave 231bd4fe43Sopenharmony_ci * @ingroup drivers 241bd4fe43Sopenharmony_ci */ 251bd4fe43Sopenharmony_ci 261bd4fe43Sopenharmony_ci#ifndef __HI_SDIO_DEVICE_H__ 271bd4fe43Sopenharmony_ci#define __HI_SDIO_DEVICE_H__ 281bd4fe43Sopenharmony_ci 291bd4fe43Sopenharmony_ci#include <hi_types_base.h> 301bd4fe43Sopenharmony_ci 311bd4fe43Sopenharmony_ci/** 321bd4fe43Sopenharmony_ci * @ingroup iot_sdio 331bd4fe43Sopenharmony_ci * 341bd4fe43Sopenharmony_ci * SDIO definition.CNcomment:SDIO定义CNend 351bd4fe43Sopenharmony_ci */ 361bd4fe43Sopenharmony_ci#define CHAN_TX_BUSY 1 371bd4fe43Sopenharmony_ci#define CHAN_TX_IDLE 0 381bd4fe43Sopenharmony_ci#define CHAN_RX_BUSY 1 391bd4fe43Sopenharmony_ci#define CHAN_RX_IDLE 0 401bd4fe43Sopenharmony_ci 411bd4fe43Sopenharmony_ci#define HISDIO_EXTENDREG_COUNT 64 421bd4fe43Sopenharmony_ci#define HISDIO_BLOCK_SIZE 512 431bd4fe43Sopenharmony_ci 441bd4fe43Sopenharmony_ci/** 451bd4fe43Sopenharmony_ci * @ingroup iot_sdio 461bd4fe43Sopenharmony_ci * 471bd4fe43Sopenharmony_ci * Device to Host sdio message type, The name can be modified according to product. 481bd4fe43Sopenharmony_ciCNcomment:设备到主机的SDIO消息类型,类型名称可以根据产品实际应用场景更改。CNend 491bd4fe43Sopenharmony_ci */ 501bd4fe43Sopenharmony_citypedef enum { 511bd4fe43Sopenharmony_ci D2H_MSG_WLAN_READY = 0, 521bd4fe43Sopenharmony_ci D2H_MSG_WOW_COMPLETE = 1, /**< wow complete. */ 531bd4fe43Sopenharmony_ci D2H_MSG_FLOWCTRL_OFF = 2, /**< can't send data */ 541bd4fe43Sopenharmony_ci D2H_MSG_FLOWCTRL_ON = 3, /**< can send data */ 551bd4fe43Sopenharmony_ci D2H_MSG_WAKEUP_SUCC = 4, /**< wakeup done */ 561bd4fe43Sopenharmony_ci D2H_MSG_ALLOW_SLEEP = 5, /**< allow sleep */ 571bd4fe43Sopenharmony_ci D2H_MSG_DISALLOW_SLEEP = 6, /**< disalow sleep */ 581bd4fe43Sopenharmony_ci D2H_MSG_DEVICE_PANIC = 7, /**< device panic */ 591bd4fe43Sopenharmony_ci D2H_MSG_POWEROFF_ACK = 8, /**< poweroff cmd ack */ 601bd4fe43Sopenharmony_ci D2H_MSG_CREDIT_UPDATE = 11, /**< update high priority buffer credit value */ 611bd4fe43Sopenharmony_ci D2H_MSG_HIGH_PKT_LOSS = 12, /**< high pri pkts loss count */ 621bd4fe43Sopenharmony_ci D2H_MSG_HEARTBEAT = 14, /**< send heartbeat */ 631bd4fe43Sopenharmony_ci D2H_MSG_WOW_WIFI_REDAY = 15, /**< device ready for host sleep */ 641bd4fe43Sopenharmony_ci D2H_MSG_COUNT = 32, /**< max support msg count */ 651bd4fe43Sopenharmony_ci} hi_sdio_d2h_msg_type_e; 661bd4fe43Sopenharmony_ci 671bd4fe43Sopenharmony_ci/** 681bd4fe43Sopenharmony_ci * @ingroup iot_sdio 691bd4fe43Sopenharmony_ci * 701bd4fe43Sopenharmony_ci * Host to Device sdio message type, The name can be modified according to product. 711bd4fe43Sopenharmony_ciCNcomment:主机到设备的SDIO消息类型,类型名称可以根据产品实际应用场景更改。CNend 721bd4fe43Sopenharmony_ci */ 731bd4fe43Sopenharmony_citypedef enum { 741bd4fe43Sopenharmony_ci H2D_MSG_FLOWCTRL_ON = 0, 751bd4fe43Sopenharmony_ci H2D_MSG_DEVICE_INFO_DUMP = 1, 761bd4fe43Sopenharmony_ci H2D_MSG_DEVICE_MEM_DUMP = 2, 771bd4fe43Sopenharmony_ci H2D_MSG_TEST = 3, 781bd4fe43Sopenharmony_ci H2D_MSG_PM_WLAN_OFF = 4, 791bd4fe43Sopenharmony_ci H2D_MSG_SLEEP_REQ = 5, 801bd4fe43Sopenharmony_ci H2D_MSG_PM_DEBUG = 6, 811bd4fe43Sopenharmony_ci H2D_MSG_QUERY_RF_TEMP = 8, 821bd4fe43Sopenharmony_ci H2D_MSG_HCC_SLAVE_THRUPUT_BYPASS = 9, 831bd4fe43Sopenharmony_ci H2D_MSG_DEVICE_MEM_INFO = 10, 841bd4fe43Sopenharmony_ci H2D_MSG_STOP_SDIO_TEST = 11, 851bd4fe43Sopenharmony_ci H2D_MSG_FORCESLP_REQ = 13, 861bd4fe43Sopenharmony_ci H2D_MSG_WOW_WIFI_SUSPEND = 14, 871bd4fe43Sopenharmony_ci H2D_MSG_WOW_WIFI_RESUME = 15, 881bd4fe43Sopenharmony_ci H2D_MSG_COUNT = 32, /**< max support msg value count */ 891bd4fe43Sopenharmony_ci} hi_sdio_h2d_msg_type_e; 901bd4fe43Sopenharmony_ci 911bd4fe43Sopenharmony_ci/** 921bd4fe43Sopenharmony_ci * @ingroup iot_sdio 931bd4fe43Sopenharmony_ci * 941bd4fe43Sopenharmony_ci * max message value between Host and Device. 951bd4fe43Sopenharmony_ci */ 961bd4fe43Sopenharmony_citypedef enum { 971bd4fe43Sopenharmony_ci SDIO_DEVICE_MSG_WLAN_READY = 0, 981bd4fe43Sopenharmony_ci SDIO_DEVICE_MSG_COUNT = 32, /**< max support msg count */ 991bd4fe43Sopenharmony_ci SDIO_DEVICE_MSG_BUTT 1001bd4fe43Sopenharmony_ci} hi_sdio_msg_e; 1011bd4fe43Sopenharmony_ci 1021bd4fe43Sopenharmony_ci/** 1031bd4fe43Sopenharmony_ci * @ingroup iot_sdio 1041bd4fe43Sopenharmony_ci * 1051bd4fe43Sopenharmony_ci * SDIO ADMA table. 1061bd4fe43Sopenharmony_ci */ 1071bd4fe43Sopenharmony_citypedef struct { 1081bd4fe43Sopenharmony_ci hi_u16 param; 1091bd4fe43Sopenharmony_ci hi_u16 len; 1101bd4fe43Sopenharmony_ci uintptr_t address; 1111bd4fe43Sopenharmony_ci} hi_sdio_admatable; 1121bd4fe43Sopenharmony_ci 1131bd4fe43Sopenharmony_ci/** 1141bd4fe43Sopenharmony_ci * @ingroup iot_sdio 1151bd4fe43Sopenharmony_ci * 1161bd4fe43Sopenharmony_ci * SDIO extend function structure. 1171bd4fe43Sopenharmony_ci */ 1181bd4fe43Sopenharmony_citypedef struct { 1191bd4fe43Sopenharmony_ci hi_u32 int_stat; 1201bd4fe43Sopenharmony_ci hi_u32 msg_stat; 1211bd4fe43Sopenharmony_ci hi_u32 xfer_count; 1221bd4fe43Sopenharmony_ci hi_u32 credit_info; 1231bd4fe43Sopenharmony_ci hi_s8 credit_isvalid; 1241bd4fe43Sopenharmony_ci hi_u8 comm_reg[HISDIO_EXTENDREG_COUNT]; 1251bd4fe43Sopenharmony_ci hi_s8 commreg_isvalid; 1261bd4fe43Sopenharmony_ci hi_s32 valid_commreg_cnt; 1271bd4fe43Sopenharmony_ci} hi_sdio_extendfunc; 1281bd4fe43Sopenharmony_ci 1291bd4fe43Sopenharmony_ci/** 1301bd4fe43Sopenharmony_ci * @ingroup iot_sdio 1311bd4fe43Sopenharmony_ci * 1321bd4fe43Sopenharmony_ci * use this callback to notify host msg event occurs. 1331bd4fe43Sopenharmony_ci */ 1341bd4fe43Sopenharmony_citypedef hi_void (*notify_host_message_event)(hi_void); 1351bd4fe43Sopenharmony_ci 1361bd4fe43Sopenharmony_ci/** 1371bd4fe43Sopenharmony_ci * @ingroup iot_sdio 1381bd4fe43Sopenharmony_ci * 1391bd4fe43Sopenharmony_ci * SDIO interrupt callback structure. 1401bd4fe43Sopenharmony_ci */ 1411bd4fe43Sopenharmony_citypedef struct { 1421bd4fe43Sopenharmony_ci hi_s32 (*rdstart_callback)(hi_u32 len, hi_u8 *admatable); /**< Callback function for HOST reading. 1431bd4fe43Sopenharmony_ci CNcomment:DEV感知到HOST发起了读操作 CNend */ 1441bd4fe43Sopenharmony_ci hi_s32 (*rdover_callback)(hi_void); /**< Callback function for HOST reading over. 1451bd4fe43Sopenharmony_ci CNcomment:DEV感知到HOST读操作结束 CNend */ 1461bd4fe43Sopenharmony_ci hi_void (*rderr_callback)(hi_void); /**< Callback function for HOST read error. 1471bd4fe43Sopenharmony_ci CNcomment:DEV感知到HOST读数据错误 CNend */ 1481bd4fe43Sopenharmony_ci hi_s32 (*wrstart_callback)(hi_u32 len, hi_u8 *admatable); /**< Callback function for HOST writting. 1491bd4fe43Sopenharmony_ci CNcomment:DEV感知到HOST发起了写操作 CNend */ 1501bd4fe43Sopenharmony_ci hi_s32 (*wrover_callback)(hi_void); /**< Callback function for HOST write over. 1511bd4fe43Sopenharmony_ci CNcomment:DEV感知到HOST写操作结束 CNend */ 1521bd4fe43Sopenharmony_ci hi_void (*processmsg_callback)(hi_u32 msg); /**< Callback function for HOST getting message. 1531bd4fe43Sopenharmony_ci CNcomment:DEV接收到HOST发来的消息 CNend */ 1541bd4fe43Sopenharmony_ci hi_void (*soft_rst_callback)(hi_void); /**< Callback function for HOST getting reset 1551bd4fe43Sopenharmony_ci interruption.CNcomment:DEV接收到HOST发来的 1561bd4fe43Sopenharmony_ci 软复位中断 CNend */ 1571bd4fe43Sopenharmony_ci} hi_sdio_intcallback; 1581bd4fe43Sopenharmony_ci 1591bd4fe43Sopenharmony_ci/** 1601bd4fe43Sopenharmony_ci* @ingroup iot_sdio 1611bd4fe43Sopenharmony_ci* @brief sdio init function 1621bd4fe43Sopenharmony_ci* 1631bd4fe43Sopenharmony_ci* @par 描述: 1641bd4fe43Sopenharmony_ci* sdio initialization function.CNcomment:sdio 初始化函数。CNend 1651bd4fe43Sopenharmony_ci* 1661bd4fe43Sopenharmony_ci* @attention None 1671bd4fe43Sopenharmony_ci* @param None 1681bd4fe43Sopenharmony_ci* 1691bd4fe43Sopenharmony_ci* @retval #0 Success. 1701bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 1711bd4fe43Sopenharmony_ci 1721bd4fe43Sopenharmony_ci* @par 依赖: 1731bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 1741bd4fe43Sopenharmony_ci* @see None。 1751bd4fe43Sopenharmony_ci*/ 1761bd4fe43Sopenharmony_cihi_u32 hi_sdio_init(hi_void); 1771bd4fe43Sopenharmony_ci 1781bd4fe43Sopenharmony_ci/** 1791bd4fe43Sopenharmony_ci* @ingroup iot_sdio 1801bd4fe43Sopenharmony_ci* @brief sdio reinit function 1811bd4fe43Sopenharmony_ci* 1821bd4fe43Sopenharmony_ci* @par 描述: 1831bd4fe43Sopenharmony_ci* sdio Reinitialize the function.CNcomment:sdio 重新初始化函数。CNend 1841bd4fe43Sopenharmony_ci* 1851bd4fe43Sopenharmony_ci* @attention None 1861bd4fe43Sopenharmony_ci* @param None 1871bd4fe43Sopenharmony_ci* 1881bd4fe43Sopenharmony_ci* @retval #0 Success. 1891bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 1901bd4fe43Sopenharmony_ci 1911bd4fe43Sopenharmony_ci* @par 依赖: 1921bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 1931bd4fe43Sopenharmony_ci* @see None。 1941bd4fe43Sopenharmony_ci*/ 1951bd4fe43Sopenharmony_cihi_u32 hi_sdio_reinit(hi_void); 1961bd4fe43Sopenharmony_ci 1971bd4fe43Sopenharmony_ci/** 1981bd4fe43Sopenharmony_ci* @ingroup iot_sdio 1991bd4fe43Sopenharmony_ci* @brief sdio soft reset function 2001bd4fe43Sopenharmony_ci* 2011bd4fe43Sopenharmony_ci* @par 描述: 2021bd4fe43Sopenharmony_ci* sdio software reset function.CNcomment:sdio 软件复位函数。CNend 2031bd4fe43Sopenharmony_ci* 2041bd4fe43Sopenharmony_ci* @attention None 2051bd4fe43Sopenharmony_ci* @param None 2061bd4fe43Sopenharmony_ci* 2071bd4fe43Sopenharmony_ci* @retval None 2081bd4fe43Sopenharmony_ci* 2091bd4fe43Sopenharmony_ci* @par 依赖: 2101bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 2111bd4fe43Sopenharmony_ci* @see None 2121bd4fe43Sopenharmony_ci*/ 2131bd4fe43Sopenharmony_cihi_void hi_sdio_soft_reset(hi_void); 2141bd4fe43Sopenharmony_ci 2151bd4fe43Sopenharmony_ci/** 2161bd4fe43Sopenharmony_ci* @ingroup iot_sdio 2171bd4fe43Sopenharmony_ci* @brief sdio register interrupt callback function 2181bd4fe43Sopenharmony_ci* 2191bd4fe43Sopenharmony_ci* @par 描述: 2201bd4fe43Sopenharmony_ci* sdio register interrupt callback function.CNcomment:sdio 注册中断回调 函数。CNend 2211bd4fe43Sopenharmony_ci* 2221bd4fe43Sopenharmony_ci* @attention。 2231bd4fe43Sopenharmony_ci* @param callback_func [IN] type #const hi_sdio_intcallback,sdio callback function. 2241bd4fe43Sopenharmony_ci* 2251bd4fe43Sopenharmony_ci* @retval #0 Success. 2261bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 2271bd4fe43Sopenharmony_ci 2281bd4fe43Sopenharmony_ci* @par 依赖: 2291bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 2301bd4fe43Sopenharmony_ci* @see None。 2311bd4fe43Sopenharmony_ci*/ 2321bd4fe43Sopenharmony_cihi_u32 hi_sdio_register_callback(const hi_sdio_intcallback *callback_func); 2331bd4fe43Sopenharmony_ci 2341bd4fe43Sopenharmony_ci/** 2351bd4fe43Sopenharmony_ci* @ingroup iot_sdio 2361bd4fe43Sopenharmony_ci* @brief sdio complete send function 2371bd4fe43Sopenharmony_ci* 2381bd4fe43Sopenharmony_ci* @par 描述: 2391bd4fe43Sopenharmony_ci* sdio complete send function.CNcomment:sdio 结束发送接口函数。CNend 2401bd4fe43Sopenharmony_ci* 2411bd4fe43Sopenharmony_ci* @attention。 2421bd4fe43Sopenharmony_ci* @param admatable [IN] type #hi_u8 *, adma table first address. One channel occupies eight bytes. Ensure that the 2431bd4fe43Sopenharmony_ci* buffer space is sufficient to prevent memory overwriting. CNcomment:adma table首地址,一个通道占用8字节,使 2441bd4fe43Sopenharmony_ci* 用时请确保足够 2451bd4fe43Sopenharmony_ci的缓存空间,防止内存越界访问。CNend 2461bd4fe43Sopenharmony_ci* @param adma_index [IN] type hi_u32, adma_index adma Transmission channel number, range: [0-130].CNcomment:adma 2471bd4fe43Sopenharmony_ci* 传输通道号,范围[0-130]。CNend 2481bd4fe43Sopenharmony_ci* 2491bd4fe43Sopenharmony_ci* @retval #0 Success. 2501bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 2511bd4fe43Sopenharmony_ci 2521bd4fe43Sopenharmony_ci* @par 依赖: 2531bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 2541bd4fe43Sopenharmony_ci* @see None。 2551bd4fe43Sopenharmony_ci*/ 2561bd4fe43Sopenharmony_cihi_u32 hi_sdio_complete_send(hi_u8 *admatable, hi_u32 adma_index); 2571bd4fe43Sopenharmony_ci 2581bd4fe43Sopenharmony_ci/** 2591bd4fe43Sopenharmony_ci* @ingroup iot_sdio 2601bd4fe43Sopenharmony_ci* @brief set sdio pad adma table function 2611bd4fe43Sopenharmony_ci* 2621bd4fe43Sopenharmony_ci* @par 描述: 2631bd4fe43Sopenharmony_ci* set sdio pad adma table function.CNcomment:sdio 配置数据对齐后的ADMA表CNend 2641bd4fe43Sopenharmony_ci* 2651bd4fe43Sopenharmony_ci* @attention。 2661bd4fe43Sopenharmony_ci* @param padlen [IN] type #hi_u32, Length of data to be sent after data alignment. 2671bd4fe43Sopenharmony_ciCNcomment:数据对齐后要发送的数据长度。CNend 2681bd4fe43Sopenharmony_ci* @param admatable [IN] type #hi_u8 *, adma table first address. One channel occupies eight bytes. Ensure that the 2691bd4fe43Sopenharmony_ci* buffer space is sufficient to prevent memory overwriting. 2701bd4fe43Sopenharmony_ciCNcomment:adma table首地址,一个通道占用8字节,使用时请确保足够的缓存空间,防止内存越界访问。CNend 2711bd4fe43Sopenharmony_ci* @param adma_index [IN] type #hi_u32, adma Transmission channel number, range: [0-130]. 2721bd4fe43Sopenharmony_ciCNcomment:adma传输通道号,范围[0-130]。CNend 2731bd4fe43Sopenharmony_ci* 2741bd4fe43Sopenharmony_ci* @retval #0 Success. 2751bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 2761bd4fe43Sopenharmony_ci 2771bd4fe43Sopenharmony_ci* @par 依赖: 2781bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 2791bd4fe43Sopenharmony_ci* @see None。 2801bd4fe43Sopenharmony_ci*/ 2811bd4fe43Sopenharmony_cihi_u32 hi_sdio_set_pad_admatab(hi_u32 padlen, hi_u8 *admatable, hi_u32 adma_index); 2821bd4fe43Sopenharmony_ci 2831bd4fe43Sopenharmony_ci/** 2841bd4fe43Sopenharmony_ci* @ingroup iot_sdio 2851bd4fe43Sopenharmony_ci* @brief write extend information function 2861bd4fe43Sopenharmony_ci* 2871bd4fe43Sopenharmony_ci* @par 描述: 2881bd4fe43Sopenharmony_ci* write extend information function.CNcomment:写扩展信息接口CNend 2891bd4fe43Sopenharmony_ci* 2901bd4fe43Sopenharmony_ci* @attention。 2911bd4fe43Sopenharmony_ci* @param extfunc [IN] type #hi_sdio_extendfunc, Extended information pointer.CNcomment:扩展信息指针.CNend 2921bd4fe43Sopenharmony_ci* 2931bd4fe43Sopenharmony_ci* @retval #0 Success. 2941bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 2951bd4fe43Sopenharmony_ci 2961bd4fe43Sopenharmony_ci* @par 依赖: 2971bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 2981bd4fe43Sopenharmony_ci* @see None。 2991bd4fe43Sopenharmony_ci*/ 3001bd4fe43Sopenharmony_cihi_u32 hi_sdio_write_extendinfo(hi_sdio_extendfunc *extfunc); 3011bd4fe43Sopenharmony_ci 3021bd4fe43Sopenharmony_ci/** 3031bd4fe43Sopenharmony_ci* @ingroup iot_sdio 3041bd4fe43Sopenharmony_ci* @brief start to send data 3051bd4fe43Sopenharmony_ci* 3061bd4fe43Sopenharmony_ci* @par 描述: 3071bd4fe43Sopenharmony_ci* start to send data.CNcomment:启动数据发送接口CNend 3081bd4fe43Sopenharmony_ci* 3091bd4fe43Sopenharmony_ci* @attention。 3101bd4fe43Sopenharmony_ci* @param xfer_bytes [IN] type #hi_u32, Length of sent data.CNcomment:发送数据长度.CNend 3111bd4fe43Sopenharmony_ci* 3121bd4fe43Sopenharmony_ci* @retval #0 Success. 3131bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 3141bd4fe43Sopenharmony_ci 3151bd4fe43Sopenharmony_ci* @par 依赖: 3161bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 3171bd4fe43Sopenharmony_ci* @see None。 3181bd4fe43Sopenharmony_ci*/ 3191bd4fe43Sopenharmony_cihi_void hi_sdio_send_data(hi_u32 xfer_bytes); 3201bd4fe43Sopenharmony_ci 3211bd4fe43Sopenharmony_ci/** 3221bd4fe43Sopenharmony_ci* @ingroup iot_sdio 3231bd4fe43Sopenharmony_ci* @brief set adma table 3241bd4fe43Sopenharmony_ci* 3251bd4fe43Sopenharmony_ci* @par 描述: 3261bd4fe43Sopenharmony_ci* set adma table.CNcomment:设置adma传输通道CNend 3271bd4fe43Sopenharmony_ci* 3281bd4fe43Sopenharmony_ci* @attention。 3291bd4fe43Sopenharmony_ci* @param admatable [IN] type #hi_u8*, adma table first address. One channel occupies eight bytes. Ensure that the 3301bd4fe43Sopenharmony_ci* buffer space is sufficient to prevent memory overwriting. CNcomment:adma table首地址,一个通道占用8字节,使 3311bd4fe43Sopenharmony_ci用时请确保足够的缓存空间,防止内存越界访问。CNend 3321bd4fe43Sopenharmony_ci* @param adma_index [IN] type #hi_u32, adma Transmission channel number, range: [0-130].CNcomment:adma传输通道号, 3331bd4fe43Sopenharmony_ci范围[0-130]。CNend 3341bd4fe43Sopenharmony_ci* @param data_addr [IN] type #const hi_u32 *, dama transmission destination address.CNcomment:dama 传输目的地址CNend 3351bd4fe43Sopenharmony_ci* @param data_len [IN] type #hi_u32, adma Transmission data length.CNcomment:adma 传输数据长度CNend 3361bd4fe43Sopenharmony_ci* 3371bd4fe43Sopenharmony_ci* @retval #0 Success. 3381bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 3391bd4fe43Sopenharmony_ci 3401bd4fe43Sopenharmony_ci* @par 依赖: 3411bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 3421bd4fe43Sopenharmony_ci* @see None。 3431bd4fe43Sopenharmony_ci*/ 3441bd4fe43Sopenharmony_cihi_u32 hi_sdio_set_admatable(hi_u8 *admatable, hi_u32 adma_index, const hi_u32 *data_addr, hi_u32 data_len); 3451bd4fe43Sopenharmony_ci 3461bd4fe43Sopenharmony_ci/** 3471bd4fe43Sopenharmony_ci* @ingroup iot_sdio 3481bd4fe43Sopenharmony_ci* @brief schedule sdio pending message. 3491bd4fe43Sopenharmony_ci* 3501bd4fe43Sopenharmony_ci* @par 描述: 3511bd4fe43Sopenharmony_ci* schedule sdio message.CNcomment:将挂起的sdio消息发送出去CNend 3521bd4fe43Sopenharmony_ci* 3531bd4fe43Sopenharmony_ci* @attention。 3541bd4fe43Sopenharmony_ci* @param None 3551bd4fe43Sopenharmony_ci* 3561bd4fe43Sopenharmony_ci* @retval #true if there is no pending msg or send pending msg success, retun true. 3571bd4fe43Sopenharmony_ciCNcomment:如果没有挂起的消息,或者将挂起的消息发送成功,返回true.CNend 3581bd4fe43Sopenharmony_ci* @retval #false if sdio not in work status or there is msg sending, return false. 3591bd4fe43Sopenharmony_ciCNcomment:如果sdio不在工作状态,或者sdio正在发送消息,返回false.CNend 3601bd4fe43Sopenharmony_ci* 3611bd4fe43Sopenharmony_ci* @par 依赖: 3621bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 3631bd4fe43Sopenharmony_ci* @see None。 3641bd4fe43Sopenharmony_ci*/ 3651bd4fe43Sopenharmony_cihi_bool hi_sdio_sched_msg(hi_void); 3661bd4fe43Sopenharmony_ci 3671bd4fe43Sopenharmony_ci/** 3681bd4fe43Sopenharmony_ci* @ingroup iot_sdio 3691bd4fe43Sopenharmony_ci* @brief sync send message. 3701bd4fe43Sopenharmony_ci* 3711bd4fe43Sopenharmony_ci* @par 描述: 3721bd4fe43Sopenharmony_ci* put msg in pending msg and send.CNcomment:将消息加入消息队列并发送CNend 3731bd4fe43Sopenharmony_ci* 3741bd4fe43Sopenharmony_ci* @attention。 3751bd4fe43Sopenharmony_ci* @param msg [IN] type #hi_u32, The message, range [0-31].CNcomment:给定消息,范围[0-31].CNend 3761bd4fe43Sopenharmony_ci* 3771bd4fe43Sopenharmony_ci* @retval #true Success. 3781bd4fe43Sopenharmony_ci* @retval #false Failure. 3791bd4fe43Sopenharmony_ci* 3801bd4fe43Sopenharmony_ci* @par 依赖: 3811bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 3821bd4fe43Sopenharmony_ci* @see None。 3831bd4fe43Sopenharmony_ci*/ 3841bd4fe43Sopenharmony_cihi_bool hi_sdio_send_sync_msg(hi_u32 msg); 3851bd4fe43Sopenharmony_ci 3861bd4fe43Sopenharmony_ci/** 3871bd4fe43Sopenharmony_ci* @ingroup iot_sdio 3881bd4fe43Sopenharmony_ci* @brief send given message ack 3891bd4fe43Sopenharmony_ci* 3901bd4fe43Sopenharmony_ci* @par 描述: 3911bd4fe43Sopenharmony_ci* Sending a Specified Signal Message.CNcomment:发送指定消息CNend 3921bd4fe43Sopenharmony_ci* 3931bd4fe43Sopenharmony_ci* @attention: 3941bd4fe43Sopenharmony_ci the current sending msg will be overwrite by this msg. 3951bd4fe43Sopenharmony_ci CNcomment: 当前正在发送的消息将该消息覆盖?CNend 3961bd4fe43Sopenharmony_ci* @param msg [IN] type #hi_u32, The message, range [0-31].CNcomment:给定消息,范围[0-31].CNend 3971bd4fe43Sopenharmony_ci* 3981bd4fe43Sopenharmony_ci* @retval #true Success. 3991bd4fe43Sopenharmony_ci* @retval #false Failure. 4001bd4fe43Sopenharmony_ci* 4011bd4fe43Sopenharmony_ci* @par 依赖: 4021bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 4031bd4fe43Sopenharmony_ci* @see None。 4041bd4fe43Sopenharmony_ci*/ 4051bd4fe43Sopenharmony_cihi_bool hi_sdio_send_msg_ack(hi_u32 msg); 4061bd4fe43Sopenharmony_ci 4071bd4fe43Sopenharmony_ci/** 4081bd4fe43Sopenharmony_ci* @ingroup iot_sdio 4091bd4fe43Sopenharmony_ci* @brief Clear given msg and add new msg to pending msg and send. 4101bd4fe43Sopenharmony_ci* 4111bd4fe43Sopenharmony_ci* @par 描述: 4121bd4fe43Sopenharmony_ci* Clear given msg and add new msg in pending msg and send. 4131bd4fe43Sopenharmony_ciCNcomment:清除消息队列中挂起的指定消息,将新消息加入消息队列并发送CNend 4141bd4fe43Sopenharmony_ci* @attention。 4151bd4fe43Sopenharmony_ci* @param send_msg [IN] type #hi_u32, Message in range [0~31] which will be sent. 4161bd4fe43Sopenharmony_ciCNcomment:指定发送的消息号,范围[0-31]CNend 4171bd4fe43Sopenharmony_ci* @param clear_msg [IN] type #hi_u32, Message in range [0~31] which will be cleard. 4181bd4fe43Sopenharmony_ciCNcomment:指定清除的消息号,范围[0-31]CNend 4191bd4fe43Sopenharmony_ci* 4201bd4fe43Sopenharmony_ci* @retval #true Success. 4211bd4fe43Sopenharmony_ci* @retval #false Failure. 4221bd4fe43Sopenharmony_ci* 4231bd4fe43Sopenharmony_ci* @par 依赖: 4241bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 4251bd4fe43Sopenharmony_ci* @see None。 4261bd4fe43Sopenharmony_ci*/ 4271bd4fe43Sopenharmony_cihi_bool hi_sdio_process_message(hi_u32 send_msg, hi_u32 clear_msg); 4281bd4fe43Sopenharmony_ci 4291bd4fe43Sopenharmony_ci/** 4301bd4fe43Sopenharmony_ci* @ingroup iot_sdio 4311bd4fe43Sopenharmony_ci* @brief sdio is pending given message 4321bd4fe43Sopenharmony_ci* 4331bd4fe43Sopenharmony_ci* @par 描述: 4341bd4fe43Sopenharmony_ci* sdio is pending given message.CNcomment:判断sdio是否挂起指定的消息CNend 4351bd4fe43Sopenharmony_ci* 4361bd4fe43Sopenharmony_ci* @attention。 4371bd4fe43Sopenharmony_ci* @param msg [IN] type #hi_u32, The message, range [0-31].CNcomment:给定消息,范围[0-31].CNend 4381bd4fe43Sopenharmony_ci* 4391bd4fe43Sopenharmony_ci* @retval #true message at pending status.CNcomment:指定消息处于挂起状态CNend 4401bd4fe43Sopenharmony_ci* @retval #false message at other status. CNcomment:指定消息不处于挂起状态CNend 4411bd4fe43Sopenharmony_ci* 4421bd4fe43Sopenharmony_ci* @par 依赖: 4431bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 4441bd4fe43Sopenharmony_ci* @see None。 4451bd4fe43Sopenharmony_ci*/ 4461bd4fe43Sopenharmony_cihi_u32 hi_sdio_is_pending_message(hi_u32 msg); 4471bd4fe43Sopenharmony_ci 4481bd4fe43Sopenharmony_ci/** 4491bd4fe43Sopenharmony_ci* @ingroup iot_sdio 4501bd4fe43Sopenharmony_ci* @brief Check whether the sdio is sending a specified message. 4511bd4fe43Sopenharmony_ci* 4521bd4fe43Sopenharmony_ci* @par 描述: 4531bd4fe43Sopenharmony_ci* Check whether the sdio is sending a specified message.CNcomment:判断sdio是否正在发送指定的消息CNend 4541bd4fe43Sopenharmony_ci* 4551bd4fe43Sopenharmony_ci* @attention。 4561bd4fe43Sopenharmony_ci* @param msg [IN] type #hi_u32, The message, range [0-31].CNcomment:给定消息,范围[0-31].CNend 4571bd4fe43Sopenharmony_ci* 4581bd4fe43Sopenharmony_ci* @retval #true The message at sending status.CNcomment:指定消息处于发送状态CNend 4591bd4fe43Sopenharmony_ci* @retval #false The message at other status.CNcomment:指定消息不处于发送状态CNend 4601bd4fe43Sopenharmony_ci* 4611bd4fe43Sopenharmony_ci* @par 依赖: 4621bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 4631bd4fe43Sopenharmony_ci* @see None。 4641bd4fe43Sopenharmony_ci*/ 4651bd4fe43Sopenharmony_cihi_u32 hi_sdio_is_sending_message(hi_u32 msg); 4661bd4fe43Sopenharmony_ci 4671bd4fe43Sopenharmony_ci/** 4681bd4fe43Sopenharmony_ci* @ingroup iot_sdio 4691bd4fe43Sopenharmony_ci* @brief get sdio extend configuration. 4701bd4fe43Sopenharmony_ci* 4711bd4fe43Sopenharmony_ci* @par 描述: 4721bd4fe43Sopenharmony_ci* get sdio extend configuration.CNcomment:获取扩展区配置信息CNend 4731bd4fe43Sopenharmony_ci* 4741bd4fe43Sopenharmony_ci* @attention None 4751bd4fe43Sopenharmony_ci* @param None 4761bd4fe43Sopenharmony_ci* 4771bd4fe43Sopenharmony_ci* @retval hi_sdio_extendfunc* pointer to extend info buffer. 4781bd4fe43Sopenharmony_ci* 4791bd4fe43Sopenharmony_ci* @par 依赖: 4801bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 4811bd4fe43Sopenharmony_ci* @see None。 4821bd4fe43Sopenharmony_ci*/ 4831bd4fe43Sopenharmony_cihi_sdio_extendfunc *hi_sdio_get_extend_info(hi_void); 4841bd4fe43Sopenharmony_ci 4851bd4fe43Sopenharmony_ci/** 4861bd4fe43Sopenharmony_ci* @ingroup iot_sdio 4871bd4fe43Sopenharmony_ci* @brief register callback to notify host msg or data event occurs. 4881bd4fe43Sopenharmony_ci* 4891bd4fe43Sopenharmony_ci* @par 描述: 4901bd4fe43Sopenharmony_ci* register callback to notify host msg or data event occurs. 4911bd4fe43Sopenharmony_ciCNcomment:注册通知Host发送了消息或数据的回调函数。CNend 4921bd4fe43Sopenharmony_ci* 4931bd4fe43Sopenharmony_ci* @attention None 4941bd4fe43Sopenharmony_ci* @param msg_event_callback [IN] type #notify_host_message_event, notify_host_message_event callback function when 4951bd4fe43Sopenharmony_ci* sending msg or data. 4961bd4fe43Sopenharmony_ciCNcomment:消息或数据发送时调用的回调函数CNend 4971bd4fe43Sopenharmony_ci* 4981bd4fe43Sopenharmony_ci* @retval None 4991bd4fe43Sopenharmony_ci* 5001bd4fe43Sopenharmony_ci* @par 依赖: 5011bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 5021bd4fe43Sopenharmony_ci* @see None。 5031bd4fe43Sopenharmony_ci*/ 5041bd4fe43Sopenharmony_cihi_void hi_sdio_register_notify_message_callback(notify_host_message_event msg_event_callback); 5051bd4fe43Sopenharmony_ci 5061bd4fe43Sopenharmony_ci/** 5071bd4fe43Sopenharmony_ci* @ingroup iot_sdio 5081bd4fe43Sopenharmony_ci* @brief set sdio powerdown or not when system enter deep_sleep. 5091bd4fe43Sopenharmony_ci* 5101bd4fe43Sopenharmony_ci* @par 描述: 5111bd4fe43Sopenharmony_ci* set sdio powerdown or not when system enter deep_sleep. 5121bd4fe43Sopenharmony_ciCNcomment:设置系统深睡模式下,SDIO模块是否掉电。CNend 5131bd4fe43Sopenharmony_ci* 5141bd4fe43Sopenharmony_ci* @attention default powerdown.CNcomment:默认掉电.CNend 5151bd4fe43Sopenharmony_ci* @param power_down [IN] type #hi_bool, powerdown or not.CNcomment:是否掉电.CNend 5161bd4fe43Sopenharmony_ci* 5171bd4fe43Sopenharmony_ci* @retval None 5181bd4fe43Sopenharmony_ci* 5191bd4fe43Sopenharmony_ci* @par 依赖: 5201bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 5211bd4fe43Sopenharmony_ci* @see None。 5221bd4fe43Sopenharmony_ci*/ 5231bd4fe43Sopenharmony_cihi_void hi_sdio_set_powerdown_when_deep_sleep(hi_bool power_down); 5241bd4fe43Sopenharmony_ci 5251bd4fe43Sopenharmony_ci/** 5261bd4fe43Sopenharmony_ci* @ingroup iot_sdio 5271bd4fe43Sopenharmony_ci* @brief Init sdio but not wait host clock ready and not wait func1 enable interrupt. 5281bd4fe43Sopenharmony_ci* 5291bd4fe43Sopenharmony_ci* @par 描述: 5301bd4fe43Sopenharmony_ci* Init sdio but not wait host clock ready and not wait func1 enable interrupt. 5311bd4fe43Sopenharmony_ciCNcomment:初始化SDIO,初始化过程中不判断host时钟是否就绪, 5321bd4fe43Sopenharmony_ci不判断是否接收到了使能function1的中断。CNend 5331bd4fe43Sopenharmony_ci* 5341bd4fe43Sopenharmony_ci* @attention None 5351bd4fe43Sopenharmony_ci* @param None 5361bd4fe43Sopenharmony_ci* 5371bd4fe43Sopenharmony_ci* @retval None 5381bd4fe43Sopenharmony_ci* 5391bd4fe43Sopenharmony_ci* @par 依赖: 5401bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 5411bd4fe43Sopenharmony_ci* @see None。 5421bd4fe43Sopenharmony_ci*/ 5431bd4fe43Sopenharmony_cihi_void hi_sdio_init_no_wait(hi_void); 5441bd4fe43Sopenharmony_ci 5451bd4fe43Sopenharmony_ci/** 5461bd4fe43Sopenharmony_ci* @ingroup iot_sdio 5471bd4fe43Sopenharmony_ci* @brief Get whether host clock ready. 5481bd4fe43Sopenharmony_ci* 5491bd4fe43Sopenharmony_ci* @par 描述: 5501bd4fe43Sopenharmony_ci* Get whether host clock ready. 5511bd4fe43Sopenharmony_ciCNcomment:判断HOST时钟是否就绪。CNend 5521bd4fe43Sopenharmony_ci* 5531bd4fe43Sopenharmony_ci* @attention None 5541bd4fe43Sopenharmony_ci* @param None 5551bd4fe43Sopenharmony_ci* 5561bd4fe43Sopenharmony_ci* @retval None 5571bd4fe43Sopenharmony_ci* 5581bd4fe43Sopenharmony_ci* @par 依赖: 5591bd4fe43Sopenharmony_ci* @li hi_sdio_device.h:Describe sdio slave APIs.CNcomment:该接口声明所在的头文件。CNend 5601bd4fe43Sopenharmony_ci* @see None。 5611bd4fe43Sopenharmony_ci*/ 5621bd4fe43Sopenharmony_cihi_bool hi_sdio_host_clk_ready(hi_void); 5631bd4fe43Sopenharmony_ci 5641bd4fe43Sopenharmony_ci#endif /* end of hi_sdio_device.h */ 565