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