MT7697 API Reference  LinkIt SDK v4
hal_sdio_slave.h
1 /* Copyright Statement:
2  *
3  * (C) 2005-2017 MediaTek Inc. All rights reserved.
4  *
5  * This software/firmware and related documentation ("MediaTek Software") are
6  * protected under relevant copyright laws. The information contained herein
7  * is confidential and proprietary to MediaTek Inc. ("MediaTek") and/or its licensors.
8  * Without the prior written permission of MediaTek and/or its licensors,
9  * any reproduction, modification, use or disclosure of MediaTek Software,
10  * and information contained herein, in whole or in part, shall be strictly prohibited.
11  * You may only use, reproduce, modify, or distribute (as applicable) MediaTek Software
12  * if you have agreed to and been bound by the applicable license agreement with
13  * MediaTek ("License Agreement") and been granted explicit permission to do so within
14  * the License Agreement ("Permitted User"). If you are not a Permitted User,
15  * please cease any access or use of MediaTek Software immediately.
16  * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
17  * THAT MEDIATEK SOFTWARE RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES
18  * ARE PROVIDED TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
19  * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
21  * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
22  * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
23  * SUPPLIED WITH MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
24  * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
25  * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
26  * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
27  * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
28  * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
29  * CUMULATIVE LIABILITY WITH RESPECT TO MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
30  * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE MEDIATEK SOFTWARE AT ISSUE,
31  * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
32  * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
33  */
34 #ifndef __HAL_SDIO_SLAVE_H__
35 #define __HAL_SDIO_SLAVE_H__
36 
37 #include "hal_platform.h"
38 
39 #ifdef HAL_SDIO_SLAVE_MODULE_ENABLED
40 
41 
286 #ifdef __cplusplus
287 extern "C" {
288 #endif
289 
295 typedef enum {
296  HAL_SDIO_SLAVE_STATUS_ERROR = -3,
297  HAL_SDIO_SLAVE_STATUS_BUSY = -2,
298  HAL_SDIO_SLAVE_STATUS_INVALID_PARAMETER = -1,
299  HAL_SDIO_SLAVE_STATUS_OK = 0
300 } hal_sdio_slave_status_t;
301 
303 typedef enum {
304  HAL_SDIO_SLAVE_TX_QUEUE_1 = 1,
305  HAL_SDIO_SLAVE_TX_QUEUE_MAX
306 } hal_sdio_slave_tx_queue_id_t;
307 
309 typedef enum {
310  HAL_SDIO_SLAVE_RX_QUEUE_0 = 0,
311  HAL_SDIO_SLAVE_RX_QUEUE_1 = 1,
312  HAL_SDIO_SLAVE_RX_QUEUE_MAX
313 } hal_sdio_slave_rx_queue_id_t;
314 
316 typedef enum {
317  HAL_SDIO_SLAVE_EVENT_ERROR = -1,
318  HAL_SDIO_SLAVE_EVENT_RX0_DONE = 0,
319  HAL_SDIO_SLAVE_EVENT_RX1_DONE = 1,
320  HAL_SDIO_SLAVE_EVENT_TX1_DONE = 2,
321  HAL_SDIO_SLAVE_EVENT_SW_INTERRUPT = 3,
322  HAL_SDIO_SLAVE_EVENT_NONE = 4
323 } hal_sdio_slave_callback_event_t;
324 
326 typedef struct {
327  uint32_t hal_sdio_slave_sw_interrupt_number;
328 } hal_sdio_slave_callback_sw_interrupt_parameter_t;
329 
331 typedef struct {
332  uint32_t hal_sdio_slave_tx_length;
333 } hal_sdio_slave_callback_tx_length_parameter_t;
334 
335 
351 typedef void (*hal_sdio_slave_callback_t)(hal_sdio_slave_callback_event_t sdio_slave_event, void *parameter, void *user_data);
364 hal_sdio_slave_status_t hal_sdio_slave_register_callback(hal_sdio_slave_port_t sdio_slave_port, hal_sdio_slave_callback_t sdio_slave_callback, void *user_data);
365 
366 
374 hal_sdio_slave_status_t hal_sdio_slave_init(hal_sdio_slave_port_t sdio_slave_port);
375 
382 hal_sdio_slave_status_t hal_sdio_slave_deinit(hal_sdio_slave_port_t sdio_slave_port);
383 
391 hal_sdio_slave_status_t hal_sdio_slave_receive_mailbox(hal_sdio_slave_port_t sdio_slave_port, uint32_t mailbox_number, uint32_t *mailbox_value);
392 
400 hal_sdio_slave_status_t hal_sdio_slave_send_mailbox(hal_sdio_slave_port_t sdio_slave_port, uint32_t mailbox_number, uint32_t mailbox_value);
401 
402 
409 hal_sdio_slave_status_t hal_sdio_slave_trigger_d2h_interrupt(hal_sdio_slave_port_t sdio_slave_port, uint32_t interrupt_number);
410 
420 hal_sdio_slave_status_t hal_sdio_slave_send_dma(hal_sdio_slave_port_t sdio_slave_port, hal_sdio_slave_rx_queue_id_t queue_id, const uint32_t *buffer, uint32_t size);
421 
422 
432 hal_sdio_slave_status_t hal_sdio_slave_receive_dma(hal_sdio_slave_port_t sdio_slave_port, hal_sdio_slave_tx_queue_id_t queue_id, uint32_t *buffer, uint32_t size);
433 
434 
435 #ifdef __cplusplus
436 }
437 #endif
438 
445 #endif /*HAL_SDIO_SLAVE_MODULE_ENABLED*/
446 #endif /*__HAL_SDIO_SLAVE_H__*/
447