blob: 35bcb78805f3af1987446a821a87265fde2595e7 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2001
8*
9*****************************************************************************/
10
11/*****************************************************************************
12 *
13 * Filename:
14 * ---------
15 * dcl_uart.h
16 *
17 * Project:
18 * --------
19 * Maui
20 *
21 * Description:
22 * ------------
23 * Header file of DCL (Driver Common Layer) for UART.
24 *
25 * Author:
26 * -------
27 * -------
28 *
29 *============================================================================
30 * HISTORY
31 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
32 *------------------------------------------------------------------------------
33 * removed!
34 * removed!
35 * removed!
36 *
37 * removed!
38 * removed!
39 * removed!
40 * removed!
41 *
42 * removed!
43 * removed!
44 * removed!
45 * removed!
46 *
47 * removed!
48 * removed!
49 * removed!
50 * removed!
51 *
52 * removed!
53 * removed!
54 * removed!
rjw2b1408e2022-12-19 11:19:29 +080055 * removed!
56 *
57 * removed!
58 * removed!
59 * removed!
rjw6c1fd8f2022-11-30 14:33:01 +080060 *
61 * removed!
62 * removed!
63 * removed!
64 *
65 * removed!
66 * removed!
67 * removed!
68 *
69 * removed!
70 * removed!
71 * removed!
72 *
73 * removed!
74 * removed!
75 * removed!
76 *
77 * removed!
78 * removed!
79 * removed!
80 *
81 * removed!
82 * removed!
83 * removed!
84 *
85 * removed!
86 * removed!
87 * removed!
88 *
89 * removed!
90 * removed!
91 * removed!
92 *
93 * removed!
94 * removed!
95 * removed!
96 *
97 * removed!
98 * removed!
99 * removed!
100 *
101 * removed!
102 * removed!
103 * removed!
104 *
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 * removed!
112 *
113 * removed!
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 * removed!
120 *
121 *
122 * removed!
123 * removed!
124 * removed!
125 *
126 * removed!
127 * removed!
128 * removed!
129 *
130 * removed!
131 * removed!
132 * removed!
133 *
134 * removed!
135 * removed!
136 * removed!
137 *
138 * removed!
139 * removed!
140 * removed!
141 * removed!
142 *
143 * removed!
144 * removed!
145 * removed!
146 *
147 * removed!
148 * removed!
149 * removed!
150 *
151 * removed!
152 * removed!
153 * removed!
154 * removed!
155 *
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 *
172 * removed!
173 * removed!
174 * removed!
175 *
176 * removed!
177 * removed!
178 * removed!
179 *
180 * removed!
181 * removed!
182 * removed!
183 *
184 * removed!
185 * removed!
186 *
187 * removed!
188 * removed!
189 * removed!
190 *
191 * removed!
192 * removed!
193 * removed!
194 *
195 * removed!
196 * removed!
197 * removed!
198 *
199 * removed!
200 * removed!
201 * removed!
202 * removed!
203 * removed!
204 *
205 * removed!
206 * removed!
207 * removed!
208 *
209 * removed!
210 * removed!
211 * removed!
212 *
213 * removed!
214 * removed!
215 * removed!
216 * removed!
217 * removed!
218 * removed!
219 * removed!
220 * removed!
221 * removed!
222 *
223 * removed!
224 * removed!
225 * removed!
226 *
227 * removed!
228 * removed!
229 * removed!
230 *
231 * removed!
232 * removed!
233 * removed!
234 *
235 * removed!
236 * removed!
237 * removed!
238 *
239 * removed!
240 * removed!
241 * removed!
242 *
243 * removed!
244 * removed!
245 * removed!
246 * removed!
247 *
248 * removed!
249 * removed!
250 * removed!
251 *
252 * removed!
253 * removed!
254 * removed!
255 *
256 * removed!
257 * removed!
258 * removed!
259 *
260 * removed!
261 * removed!
262 * removed!
263 *
264 * removed!
265 * removed!
266 * removed!
267 *
268 * removed!
269 * removed!
270 * removed!
271 *
272 * removed!
273 * removed!
274 * removed!
275 *
276 * removed!
277 * removed!
278 * removed!
279 *
280 * removed!
281 * removed!
282 * removed!
283 *
284 * removed!
285 * removed!
286 * removed!
287 *
288 * removed!
289 * removed!
290 * removed!
291 *
292 * removed!
293 * removed!
294 * removed!
295 *
296 * removed!
297 * removed!
298 * removed!
299 *
300 * removed!
301 * removed!
302 * removed!
303 *
304 * removed!
305 * removed!
306 * removed!
307 *
308 * removed!
309 * removed!
310 * removed!
311 *
312 * removed!
313 * removed!
314 * removed!
315 *
316 * removed!
317 * removed!
318 * removed!
319 *
320 * removed!
321 * removed!
322 * removed!
323 *
324 * removed!
325 * removed!
326 * removed!
327 *
328 * removed!
329 * removed!
330 * removed!
331 *
332 * removed!
333 * removed!
334 * removed!
335 *
336 * removed!
337 * removed!
338 * removed!
339 *
340 * removed!
341 * removed!
342 * removed!
343 *
344 * removed!
345 * removed!
346 * removed!
347 *
348 * removed!
349 * removed!
350 * removed!
351 *
352 * removed!
353 * removed!
354 * removed!
355 *
356 * removed!
357 * removed!
358 * removed!
359 *
360 * removed!
361 * removed!
362 * removed!
363 *
364 * removed!
365 * removed!
366 * removed!
367 *
368 * removed!
369 * removed!
370 * removed!
371 *
372 * removed!
373 * removed!
374 * removed!
375 *
376 *------------------------------------------------------------------------------
377 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
378 *============================================================================
379 ****************************************************************************/
380#ifdef DCL_DEFINITION_STRUCT
381#ifndef __DCL_UART_STRUCT__
382#define __DCL_UART_STRUCT__
383
384#if defined(__CMUX_SUPPORT__)
385#include "cmux_vp_num.h"
386#define VIRTUAL_PORT_NUM CMUX_VP_NUM
387#else // #if defined(__CMUX_SUPPORT__)
388#define VIRTUAL_PORT_NUM 0
389#endif // #if defined(__CMUX_SUPPORT__)
390
391/*!
392 * @brief it defines DCL UART Device port enumeration
393 */
394#define DCL_UART_DEV \
395 uart_port1=0x00, \
396 uart_port2, \
397 uart_port3, \
398 /*uart_port_irda,*/\
399 uart_port_usb,\
400 uart_port_usb2,\
401 uart_port_usb3,\
402 uart_port_usb4,\
403 uart_port_usb5,\
404 uart_port_usb6,\
405 uart_port_usb7,\
406 uart_port_usb8,\
407 uart_port_usb_sp_direct,\
408 /*uart_port_bluetooth,*/\
409 /*uart_port_swdbg,*/\
410 uart_port_dhl_sp_expt,\
411 uart_port_dhl_eap_expt = uart_port_dhl_sp_expt,\
412 uart_port_dhl_ctrl_sp_expt,\
413 uart_port_meta_eap_expt = uart_port_dhl_ctrl_sp_expt,\
414 uart_port_dhl_sp,\
415 uart_port_dhl_ccci = uart_port_dhl_sp,\
416 uart_port_ccci_start = uart_port_dhl_ccci,\
417 uart_port_dhl_ctrl_sp,\
418 uart_port_tst_ccci = uart_port_dhl_ctrl_sp,\
419 uart_port_at_ccci,\
420 uart_port_gps_ccci,\
421 uart_port_sim_ccci,\
422 uart_port_dhl2_ccci,\
423 uart_port_atcp_ccci,\
424 uart_port_c2k_ppp_ccci,\
425 uart_port_c2k_agps_ccci,\
426 uart_port_cellinfo_ccci,\
427 uart_port_imsm_ccci,\
428 uart_port_woa_ccci,\
429 uart_port_xui_ccci,\
430 uart_port_bip_ccci,\
431 uart_port_udc_ccci,\
432 uart_port_nlopt_ccci,\
433 uart_port_nlopp_ccci,\
434 uart_port_sar_ccci,\
435 uart_port_ciq_ccci,\
436 uart_port_ikeraw_ccci,\
437 uart_port_ril_ipc0_ccci,\
438 uart_port_ril_ipc1_ccci,\
439 uart_port_vt_ccci,\
440 uart_port_cc_state_ccci,\
441 uart_port_mipi_ccci,\
442 uart_port_mipc_ap0_ccci,\
443 uart_port_mipc_ap1_ccci,\
444 uart_port_mipc_ap2_ccci,\
445 uart_port_mipc_ap3_ccci,\
446 uart_port_mipc_ap4_ccci,\
447 uart_port_mipc_ap5_ccci,\
448 uart_port_mipc_ap6_ccci,\
449 uart_port_mipc_ap7_ccci,\
450 uart_port_mipc_ap8_ccci,\
451 uart_port_mipc_ap9_ccci,\
452 uart_port_mipc_eap0_ccci,\
453 uart_port_mbim_eap0_ccci,\
454 uart_port_log_eap_ccci, uart_port_dhl_eap = uart_port_log_eap_ccci,\
455 uart_port_meta_eap_ccci, uart_port_meta_eap = uart_port_meta_eap_ccci,\
456 uart_port_epdg_ccci,\
457 uart_port_epdg2_ccci,\
458 uart_port_epdg3_ccci,\
459 uart_port_epdg4_ccci,\
460 uart_port_mbim_eap_dss0_ccci,\
461 uart_port_mbim_eap_dss1_ccci,\
462 uart_port_mbim_eap_dss2_ccci,\
463 uart_port_mbim_eap_dss3_ccci,\
464 uart_port_mbim_eap_dss4_ccci,\
465 uart_port_mbim_eap_dss5_ccci,\
466 uart_port_mbim_eap_dss6_ccci,\
467 uart_port_mbim_eap_dss7_ccci,\
468 uart_port_mipc_ap10_ccci,\
469 uart_port_mipc_ap11_ccci,\
470 uart_port_mipc_ap12_ccci,\
471 uart_port_mipc_ap13_ccci,\
472 uart_port_mipc_ap14_ccci,\
rjw2b1408e2022-12-19 11:19:29 +0800473 uart_port_mbim_sap_ccci,\
474 uart_port_ccci_end = uart_port_mbim_sap_ccci,\
rjw6c1fd8f2022-11-30 14:33:01 +0800475 start_of_virtual_port,\
476 end_of_virtual_port = (VIRTUAL_PORT_NUM + start_of_virtual_port),\
477 /*uart_port_dcc,*/\
478 /*uart_port_lga1,*/\
479 /*uart_port_lga2,*/\
480 /*uart_port_lmu,*/\
481 /*uart_port_sp_usb,*/\
482 /*uart_port_sp_usb_dsp,*/\
483 uart_port_mini_log,\
484 uart_port_dual_talk,\
485 uart_port_modis,/*only for modis*/\
486 uart_port_mtad,\
487 uart_max_port,\
488 uart_port_null = 99,
489
490
491/*******************************************************************************
492 * DCL_CTRL_CMD for UART
493 *******************************************************************************/
494/*!
495 * @brief it defines DCL UART commands, including SIO/UART/USB/TTY commands
496 * Since TTY architecture has been modified and enhanced, there are some summaries for UART commands:
497 * - Data related SIO commands, such as
498 * SIO_CMD_PUT_BYTES
499 * SIO_CMD_PUT_ISR_BYTES,
500 * SIO_CMD_PUT_UART_BYTE
501 * SIO_CMD_PUT_UART_BYTES
502 * SIO_CMD_GET_TX_AVAIL
503 * SIO_CMD_GET_ISR_TX_AVAIL
504 * -> only support for conventional Tx Path.
505 * SIO_CMD_GET_BYTES
506 * SIO_CMD_GET_UART_BYTE
507 * SIO_CMD_GET_RX_AVAIL
508 * -> only support for conventional Rx Path.
509 * SIO_CMD_SEND_ISR_DATA
510 * SIO_CMD_SEND_DATA
511 * -> not support for all path.
512 * are not supported for new upper layer modules which use NEW TTY architecture.
513 * - TTY commands are added for new TTY architecture.
514 * among these commands, TTY_CMD_PUT_BYTES_IOR is to put bytes with ior format.
515 * But the upper layer modules don't need to take care TTY_CMD_PUT_BYTES_IOR commands. They only use DclSerialPort_UpModuleTransmit API to put data.
516 * - Driver must implement the following commands:
517 * SIO_CMD_INIT
518 * SIO_CMD_OPEN
519 * SIO_CMD_CLOSE
520 * SIO_CMD_PURGE
521 * SIO_CMD_SET_OWNER
522 * SIO_CMD_CLR_RX_BUF
523 * SIO_CMD_CLR_TX_BUF
524 * SIO_CMD_GET_OWNER_ID
525 * TTY_CMD_PUT_BYTES_IOR
526 * TTY_CMD_GET_CHUNK_SIZE
527 * TTY_CMD_ASSIGN_RX_IOR
528 * TTY_CMD_NEED_TX_DONE_CB
529 * , other commands
530 * - UART commands UART_CMD_BOOT_PUTBYTES & UART_CMD_BMT_PUT_BYTES still use buffer/length instead of ior as parameter.
531 *
532 * Notes of some commands:
533 * - SIO_CMD_CLR_TX_BUF : it would block and sleep before the command returns in conventional Tx mode.
534 * - SIO_CMD_CLR_RX_BUF : it would block and sleep before the command returns in conventional Rx mode.
535 * - SIO_CMD_SET_OWNER : it would block and sleep before the command returns in conventional Tx or Rx mode.
536 * - SIO_CMD_CLOSE : it would block and sleep before the command returns in conventional Tx or Rx mode.
537 * - SIO_CMD_PUT_ISR_BYTES : This command doesn't guarantee that all data can be sent successfully in conventional Tx mode since it won't send ReadyToWrite ilm.
538 */
539#define UART_CMDS \
540 SIO_CMD_INIT = 0x00,\
541 SIO_CMD_OPEN,\
542 SIO_CMD_CLOSE,\
543 SIO_CMD_GET_BYTES,\
544 SIO_CMD_PUT_BYTES,\
545 SIO_CMD_GET_RX_AVAIL,\
546 SIO_CMD_GET_TX_AVAIL,\
547 SIO_CMD_PUT_ISR_BYTES,\
548 SIO_CMD_GET_ISR_TX_AVAIL,\
549 SIO_CMD_PURGE,\
550 SIO_CMD_SET_OWNER,\
551 SIO_CMD_SET_FLOW_CTRL,\
552 SIO_CMD_CONFIG_ESCAPE,\
553 SIO_CMD_SET_DCB_CONFIG,\
554 SIO_CMD_CTRL_DCD,\
555 SIO_CMD_CTRL_BREAK, \
556 SIO_CMD_CLR_RX_BUF,\
557 SIO_CMD_CLR_TX_BUF, \
558 SIO_CMD_SET_BAUDRATE, \
559 SIO_CMD_SEND_ISR_DATA, \
560 SIO_CMD_SEND_DATA, \
561 SIO_CMD_GET_OWNER_ID, \
562 SIO_CMD_SET_AUTOBAUD_DIV, \
563 SIO_CMD_REG_TX_CB,\
564 SIO_CMD_REG_RX_CB,\
565 SIO_CMD_GET_UART_BYTE,\
566 SIO_CMD_PUT_UART_BYTE,\
567 SIO_CMD_PUT_UART_BYTES,\
568 SIO_CMD_READ_DCB_CONFIG,\
569 SIO_CMD_CTRL_RI,\
570 SIO_CMD_GET_ESCAPE_INFO,\
571 SIO_CMD_CTRL_DTR,\
572 SIO_CMD_READ_HW_STATUS,\
573 SIO_CMD_GET_UART_BYTE_WITH_TIMEOUT,\
574 UART_CMD_UART_START = 0x100,\
575 UART_CMD_SET_FIFO_TRIGGER,\
576 UART_CMD_POWER_ON,\
577 UART_CMD_CHECK_TX_BUF_EMPTY,\
578 UART_CMD_CHECK_TX_SEND_OUT,\
579 UART_CMD_GET_TX_BUF_SIZE,\
580 UART_CMD_SLEEP_TX_ENABLE,\
581 UART_CMD_CTRL_SLEEP_MODE,\
582 UART_CMD_SWITCH_PORT,\
583 UART_CMD_BOOTUP_INIT,\
584 UART_CMD_BOOT_PUTBYTES,\
585 UART_CMD_LOOPBACK,\
586 UART_CMD_ASSERT_WAIT_SEND_OUT,\
587 UART_CMD_CTRL_USE_VFIFO,\
588 UART_CMD_GET_FLOW_CONTROL,\
589 UART_CMD_REG_DEF_CB,\
590 UART_CMD_BMT_PUT_BYTES,\
591 UART_CMD_RECHANDLER_VFIFO,\
592 UART_CMD_TRXHANDLER_VFIFO,\
593 UART_CMD_RECTIMEOUTHANDLE,\
594 UART_CMD_CTRL_TX_DMA,\
595 UART_CMD_GET_MAX_BAUDRATE,\
596 UART_CMD_UART_END,\
597 USB_CMD_UART_START = 0x200,\
598 USB_CMD_IS_CDCACM,\
599 USB_CMD_HIGH_SPEED_IF_ENABLE, \
600 USB_CMD_REG_TX_CB, \
601 USB_CMD_TX_DATA_STATUS, \
602 USB_CMD_SEND_DATA, \
603 USB_CMD_GET_DATA, \
604 USB_CMD_SEND_ISR_DATA, \
605 USB_CMD_CTRL_SEND_DATA, \
606 USB_CMD_CTRL_GET_DATA, \
607 USB_CMD_HALT, \
608 USB_CMD_FT_PORT, \
609 USB_CMD_ACM_RING_BUFF_THRESHOLD_EN, \
610 USB_CMD_USB2UART_TX_DMA_CBK, \
611 USB_CMD_BOOT_PUTBYTES, \
612 USB_CMD_IS_CDCACM_ACTIVE,\
613 USB_CMD_UART_END, \
614 TTY_CMD_UART_START = 0x300,\
615 TTY_CMD_GET_CHUNK_SIZE,\
616 TTY_CMD_ASSIGN_RX_IOR,\
617 TTY_CMD_NEED_TX_DONE_CB,\
618 TTY_CMD_GET_DRV_STATE,\
619 TTY_CMD_PUT_BYTES_IOR,\
620 TTY_CMD_PUT_BYTES_IOR_LIGHT,\
621 TTY_CMD_GET_MTU_SIZE,\
622 TTY_CMD_SET_INDICATION,\
623 TTY_CMD_UART_END,\
624 TTY_CMD_EXCEPTION_START = 0x400,\
625 TTY_CMD_EXCEPTION_RESET,\
626 TTY_CMD_EXCEPTION_HIF_INIT,\
627 TTY_CMD_EXCEPTION_CLEAR_CHANNEL,\
628 TTY_CMD_EXCEPTION_TX_GPD,\
629 TTY_CMD_EXCEPTION_TX_DONE_INFO,\
630 TTY_CMD_EXCEPTION_HIF_STATE,\
631 TTY_CMD_EXCEPTION_ASSIGN_RX_GPD,\
632 TTY_CMD_EXCEPTION_GET_RX_GPD,\
633 TTY_CMD_EXCEPTION_HIF_POLL,\
634 TTY_CMD_EXCEPTION_HIF_RESET_LINK,\
635 TTY_CMD_EXCEPTION_FLUSH_TX,\
636 TTY_CMD_EXCEPTION_FLUSH_RX,\
637 TTY_CMD_EXCEPTION_END,
638
639//
640typedef enum
641{
642 DCL_UART_TYPE = 0x00,
643 DCL_UART_USB_TYPE,
644 DCL_UART_BLUETOOTH_TYPE,
645 DCL_UART_CMUX_TYPE,
646 DCL_UART_SPPA_TYPE,
647 DCL_UART_CCCI_TYPE,
648 DCL_UART_CCIF_TYPE,
649 DCL_UART_DCC_TYPE,
650 DCL_UART_LOGACC_TYPE,
651 DCL_UART_LMU_TYPE,
652 DCL_UART_SP_USB_TYPE,
653 DCL_UART_MINI_LOG_TYPE,
654 DCL_UART_MTAD_TYPE,
655 DCL_UART_DEV_TYPE_MAX
656}SIO_TYPE_T;
657
658typedef DCL_UINT32 UART_BAUDRATE_T;
659typedef UART_BAUDRATE_T UART_baudrate;
660typedef DCL_UINT16 UART_PORT;
661
662#define UART_BAUD_AUTO 0
663#define UART_BAUD_75 75
664#define UART_BAUD_150 150
665#define UART_BAUD_300 300
666#define UART_BAUD_600 600
667#define UART_BAUD_1200 1200
668#define UART_BAUD_2400 2400
669#define UART_BAUD_4800 4800
670#define UART_BAUD_7200 7200
671#define UART_BAUD_9600 9600
672#define UART_BAUD_14400 14400
673#define UART_BAUD_19200 19200
674#define UART_BAUD_28800 28800
675#define UART_BAUD_33900 33900
676#define UART_BAUD_38400 38400
677#define UART_BAUD_57600 57600
678#define UART_BAUD_115200 115200
679#define UART_BAUD_230400 230400
680#define UART_BAUD_460800 460800
681#define UART_BAUD_921600 921600
682#define UART_BAUD_1500000 1500000
683
684#define UART_TO_ELT_BAUD 1500000
685
686typedef enum {
687 LEN_5=5,
688 LEN_6,
689 LEN_7,
690 LEN_8
691} UART_BITS_PER_CHAR_T;
692
693typedef enum {
694 SB_1=1,
695 SB_2,
696 SB_1_5
697} UART_STOP_BITS_T;
698
699typedef enum {
700 PA_NONE=0,
701 PA_ODD,
702 PA_EVEN,
703 PA_SPACE
704} UART_PARITY_T;
705
706/*
707#if defined(FC_NONE)
708#undef FC_NONE
709#endif
710*/
711
712typedef enum {
713 FC_NONE=1,
714 FC_HW,
715 FC_SW
716} UART_FLOW_CTRL_MODE_T;
717
718typedef enum {
719 DCL_NONE_VFIFO,
720 DCL_RX_VFIFO,
721 DCL_TX_VFIFO,
722 DCL_TXRX_VFIFO
723} UART_VFIFO_T;
724
725typedef enum {
726 uart_sleep_on_tx_allow = 0,
727 uart_sleep_on_tx_forbid
728} UART_SLEEP_ON_TX;
729
730
731
732typedef struct
733{
734 UART_BAUDRATE_T u4Baud;
735 DCL_UINT8 u1DataBits; //UART_BITS_PER_CHAR_T
736 DCL_UINT8 u1StopBits; //UART_STOP_BITS_T
737 DCL_UINT8 u1Parity; //UART_PARITY_T
738 DCL_UINT8 u1FlowControl; //UART_FLOW_CTRL_MODE_T
739 DCL_UCHAR ucXonChar;
740 DCL_UCHAR ucXoffChar;
741 DCL_BOOLEAN fgDSRCheck;
742} UART_CONFIG_T;
743
744typedef enum
745{
746 DCL_IO_Low=0,
747 DCL_IO_High
748} IO_LEVEL_T;
749
750
751typedef enum {
752 DCL_RX_BUF,
753 DCL_TX_BUF
754} UART_BUFFER_T;
755
756typedef enum {
757 DCL_UART_SLEEP_ON_TX_ALLOW = 0,
758 DCL_UART_SLEEP_ON_TX_FORBID,
759} UART_SLEEP_ON_TX_T;
760
761typedef enum {
762 DCL_UART_BY_VFIFO,
763 DCL_UART_BY_DMA,
764 DCL_UART_BY_MCU,
765 DCL_UART_BY_UNKNOWN
766} UART_WORK_MODE;
767
768
769/*!
770 * @brief tty_io_request_t is a typedef of struct _tty_io_request
771 */
772typedef struct _tty_io_request_t tty_io_request_t;
773
774/*!
775 * @brief struct _tty_io_request_t describe io request used to communicate
776 * between ap module & tty
777 */
778struct _tty_io_request_t{
779 /*!
780 * @brief next io request
781 */
782 tty_io_request_t *next_request;
783 /*!
784 * @brief pointer to current gpd of this io request
785 */
786 void *first_gpd;
787 /*!
788 * @brief pointer to last gpd of this io request
789 */
790 void *last_gpd;
791};
792
793//UART_CMD_INIT
794typedef struct
795{
796 DCL_UINT32 u4Flag;
797}UART_CTRL_INIT_T;
798
799//UART_CMD_OPEN
800typedef struct
801{
802 DCL_UINT32 u4OwenrId;
803}UART_CTRL_OPEN_T;
804
805//UART_CMD_CLOSE
806typedef struct
807{
808 DCL_UINT32 u4OwenrId;
809}UART_CTRL_CLOSE_T;
810
811//UART_CMD_GET_BYTES
812typedef struct
813{
814 DCL_UINT16 u2Length;
815 DCL_UINT32 u4OwenrId;
816 DCL_UINT16 u2RetSize;
817 DCL_UINT8* puBuffaddr;
818 DCL_UINT8* pustatus;
819
820}UART_CTRL_GET_BYTES_T;
821
822//UART_CMD_PUT_BTYES
823//UART_CMD_PUT_ISR_BYTES
824typedef struct
825{
826 DCL_UINT16 u2Length;
827 DCL_UINT32 u4OwenrId;
828 DCL_UINT16 u2RetSize;
829 DCL_UINT8* puBuffaddr;
830}UART_CTRL_PUT_BYTES_T;
831
832typedef struct
833{
834 DCL_UINT32 u4OwnerId;
835 void *putIor;
836}UART_CTRL_PUT_BYTES_IOR_T;
837
838//UART_CMD_GET_RX_AVAIL
839typedef struct
840{
841 DCL_UINT16 u2RetSize;
842}UART_CTRL_RX_AVAIL_T;
843
844//UART_CMD_GET_TX_AVAIL
845//UART_CMD_GET_ISR_TX_AVAIL
846typedef struct
847{
848 DCL_UINT16 u2RetSize;
849}UART_CTRL_TX_AVAIL_T;
850
851//UART_CMD_PURGE
852typedef struct
853{
854 DCL_UINT32 u4OwenrId;
855 UART_BUFFER_T dir;
856}UART_CTRL_PURGE_T;
857
858//UART_CMD_SET_OWNER
859//UART_CMD_GET_OWNER_ID
860typedef struct
861{
862 DCL_UINT32 u4OwenrId;
863}UART_CTRL_OWNER_T;
864
865//UART_CMD_SET_FLOW_CTRL
866typedef struct
867{
868 DCL_UINT32 u4OwenrId;
869 DCL_BOOL bXON;
870}UART_CTRL_FLOW_CTRL_T;
871
872//UART_CMD_CONFIG_ESCAPE
873typedef struct
874{
875 DCL_UINT32 u4OwenrId;
876 DCL_UINT8 uEscChar;
877 DCL_UINT16 u2ESCGuardtime;
878} UART_CTRL_CONFIG_ESP_T;
879
880//UART_CMD_SET_DCB_COFIG
881//UART_CMD_READ_DCB_CONFIG
882
883typedef struct
884{
885 DCL_UINT32 u4OwenrId;
886 UART_CONFIG_T rUARTConfig;
887} UART_CTRL_DCB_T;
888
889//UART_CMD_CTRL_DCD
890
891typedef struct
892{
893 DCL_UINT32 u4OwenrId;
894 IO_LEVEL_T rIOLevelDCD;
895} UART_CTRL_DCD_T;
896
897//UART_CMD_GET_FLOW_CONTROL
898typedef struct
899{
900 DCL_UINT32 u4OwenrId;
901 UART_FLOW_CTRL_MODE_T FlowCtrlMode;
902}UART_CTRL_GET_FC_T;
903
904//TTY_CMD_GET_CHUNK_SIZE
905typedef struct
906{
907 DCL_UINT32 chunkSize;
908} UART_CTRL_GET_CHUNK_SIZE_T;
909
910//TTY_CMD_NEED_TX_DONE_CB
911typedef struct
912{
913 DCL_UINT32 u4OwnerId;
914 DCL_BOOL needTxDoneCb;
915} UART_CTRL_NEED_TX_DONE_CB_T;
916
917//TTY_CMD_GET_MTU_SIZE
918typedef struct
919{
920 DCL_UINT32 ulmtu_sz;
921 DCL_UINT32 dlmtu_sz;
922} UART_CTRL_GET_MTU_SIZE_T;
923
924//TTY_CMD_SET_INDICATION
925typedef struct
926{
927 DCL_BOOL need_indication;
928} UART_CTRL_SET_INDICATION_T;
929
930/*!
931 * @brief TTY driver state
932 */
933typedef enum _tty_drv_state {
934 /*!
935 * @brief driver detached state
936 */
937 DRV_ST_DETACHED = 0,
938 /*!
939 * @brief driver attached state
940 */
941 DRV_ST_ATTACHED
942} tty_drv_state_e;
943
944//TTY_CMD_GET_DRV_STATE
945typedef struct
946{
947 DCL_UINT32 u4OwnerId;
948 tty_drv_state_e drv_state;
949} UART_CTRL_GET_DRV_STATE_T;
950
951//TTY_CMD_ASSIGN_RX_IOR
952typedef struct
953{
954 DCL_UINT32 u4OwnerId;
955 void *ior;
956} UART_CTRL_ASSIGN_RX_IOR_T;
957
958//UART_CMD_CTRL_BREAK
959typedef struct
960{
961 DCL_UINT32 u4OwenrId;
962 IO_LEVEL_T rIOLevelBRK;
963} UART_CTRL_BREAK_T;
964
965//UART_CMD_CLR_RX_BUF
966//UART_CMD_CLR_TX_BUF
967typedef struct
968{
969 DCL_UINT32 u4OwenrId;
970} UART_CTRL_CLR_BUFFER_T;
971
972//UART_CMD_SET_BAUDRATE
973typedef struct
974{
975 DCL_UINT32 u4OwenrId;
976 UART_BAUDRATE_T baudrate;
977} UART_CTRL_BAUDRATE_T;
978
979//UART_CMD_SEND_ISR_DATA
980//UART_CMD_SEND_DATA
981typedef struct
982{
983 DCL_UINT32 u4OwenrId;
984 DCL_UINT8* puBuffaddr;
985 DCL_UINT16 u2Length;
986 DCL_UINT8 umode;
987 DCL_UINT8 uescape_char;
988 DCL_UINT16 u2RetSize;
989}UART_CTRL_SEND_DATA_T;
990
991//UART_CMD_SET_AUTOBAUD_DIV
992typedef struct
993{
994 DCL_UINT32 u4OwenrId;
995} UART_CTRL_AUTO_BAUDDIV_T;
996
997typedef void (*DCL_UART_TX_FUNC)(DCL_UINT32 u4Port);
998typedef void (*DCL_UART_RX_FUNC)(DCL_UINT32 u4Port) ;
999
1000
1001//UART_CMD_REG_TX_CB
1002typedef struct
1003{
1004 DCL_UINT32 u4OwenrId;
1005 DCL_UART_TX_FUNC func;
1006} UART_CTRL_REG_TX_CB_T;
1007
1008
1009//UART_CMD_REG_RX_CB
1010typedef struct
1011{
1012 DCL_UINT32 u4OwenrId;
1013
1014 DCL_UART_RX_FUNC func;
1015} UART_CTRL_REG_RX_CB_T;
1016
1017typedef enum
1018{
1019 UART_TX = 0,
1020 UART_RX,
1021 DSP_TX,
1022 DSP_RX
1023}UART_IO_DIR;
1024
1025//UART_CMD_REG_DEF_CB
1026typedef struct
1027{
1028 UART_IO_DIR dir;
1029}UART_CTRL_REG_DEF_CB_T;
1030
1031//UART_CMD_GET_UART_BYTE
1032typedef struct
1033{
1034 DCL_UINT8 uByte;
1035}UART_CTRL_GET_UART_BYTE_T;
1036
1037//SIO_CMD_GET_UART_BYTE_WITH_TIMEOUT
1038typedef struct
1039{
1040 DCL_UINT8 u1retByte;
1041 DCL_UINT8 uByte;
1042 DCL_UINT32 u4timeout_value;
1043}UART_CTRL_GET_UART_BYTE_WITH_TIMEOUT_T;
1044
1045//UART_CMD_PUT_UART_BYTE
1046typedef struct
1047{
1048 DCL_UINT8 uData;
1049}UART_CTRL_PUT_UART_BYTE_T;
1050
1051//UART_CMD_PUT_UART_BYTES
1052typedef struct
1053{
1054 DCL_UINT8* puBuffaddr;
1055 DCL_UINT16 u2Length;
1056
1057}UART_CTRL_PUT_UART_BYTES_T;
1058
1059//UART_CMD_CTRL_RI
1060typedef struct
1061{
1062 DCL_UINT32 u4OwenrId;
1063 IO_LEVEL_T rIOLevelSRI;
1064
1065}UART_CTRL_RI_T;
1066
1067//UART_CMD_CTRL_DTR
1068typedef struct
1069{
1070 DCL_UINT32 u4OwenrId;
1071 IO_LEVEL_T rIOLevelDTR;
1072}UART_CTRL_DTR_T;
1073
1074//UART_CMD_READ_HW_STATUS
1075typedef struct
1076{
1077 IO_LEVEL_T rIOLevelDSR;
1078 IO_LEVEL_T rIOLevelCTS;
1079}UART_CTRL_RHS_T;
1080
1081//UART_CMD_SET_FIFO_TRIGGER
1082typedef struct
1083{
1084 DCL_UINT16 tx_level;
1085 DCL_UINT16 rx_level;
1086}UART_CTRL_SFT_T;
1087
1088//UART_CMD_POWER_ON
1089typedef struct
1090{
1091 DCL_BOOL bFlag_Poweron;
1092}UART_CTRL_POWERON_T;
1093
1094//UART_CMD_CHECK_TX_BUF_EMPTY
1095typedef struct
1096{
1097 DCL_BOOL bFlag;
1098}UART_CTRL_CHECK_TBE_T;
1099
1100// UART_CMD_CHECK_TX_SEND_OUT
1101typedef struct
1102{
1103 DCL_BOOL bFlag;
1104}UART_CTRL_CHECK_TSO_T;
1105
1106//UART_CMD_GET_TX_BUF_SIZE
1107typedef struct
1108{
1109 DCL_UINT32* ptotal_size;
1110 DCL_UINT32* preturn_size;
1111}UART_CTRL_GET_TBS_T;
1112
1113
1114//UART_CMD_SLEEP_TX_ENABLE
1115typedef struct
1116{
1117 UART_SLEEP_ON_TX_T bFlag;
1118}UART_CTRL_SLEEP_ON_TX_ENABLE_T;
1119
1120//UART_CMD_CTRL_SLEEP_MODE
1121typedef struct
1122{
1123 DCL_BOOL bFlag;
1124}UART_CTRL_SLEEP_ENABLE_T;
1125
1126
1127//UART_CMD_BOOT_PUTBYTES
1128typedef struct
1129{
1130 DCL_UINT8* puBuffaddr;
1131 DCL_UINT16 u2Length;
1132}UART_CTRL_BOOT_PUTBYTES_T;
1133
1134
1135//UART_CMD_CTRL_USE_VFIFO
1136typedef struct
1137{
1138 DCL_BOOL bUseVFifo;
1139}UART_CTRL_USE_VFIFO_T;
1140
1141//UART_CMD_GET_MAX_BAUDRATE
1142typedef struct
1143{
1144 kal_uint32 max_baudrate;
1145}UART_CTRL_GET_MAXBAUDRATE_T;
1146
1147//TTY_CMD_EXCEPTION_TX_GPD
1148typedef struct
1149{
1150 void *first_gpd;
1151 void *last_gpd;
1152}TTY_CTRL_EXCP_TX_GPD_T;
1153
1154//TTY_CMD_EXCEPTION_TX_DONE_INFO
1155typedef struct
1156{
1157 void *first_gpd;
1158 void *last_gpd;
1159 DCL_UINT32 num;
1160}TTY_CTRL_EXCP_TX_DONE_INFO_T;
1161
1162//TTY_CMD_EXCEPTION_HIF_STATE
1163typedef enum _tty_excp_hif_state {
1164 HIF_STATE_NORMAL = 0,
1165 HIF_STATE_TXERROR
1166} tty_excp_hif_state;
1167typedef struct
1168{
1169 tty_excp_hif_state hif_state;
1170}TTY_CTRL_EXCP_HIF_STATE_T;
1171
1172//TTY_CMD_EXCEPTION_ASSIGN_RX_GPD
1173typedef struct
1174{
1175 void *first_gpd;
1176 void *last_gpd;
1177}TTY_CTRL_EXCP_ASSIGN_RX_GPD_T;
1178
1179//TTY_CMD_EXCEPTION_GET_RX_GPD
1180typedef struct
1181{
1182 void *first_gpd;
1183 void *last_gpd;
1184 DCL_UINT32 num;
1185}TTY_CTRL_EXCP_GET_RX_GPD_T;
1186
1187//TTY_CMD_EXCEPTION_FLUSH_TX
1188typedef struct
1189{
1190 void *first_gpd;
1191 void *last_gpd;
1192 DCL_UINT32 num;
1193}TTY_CTRL_EXCP_FLUSH_TX_T;
1194
1195//TTY_CMD_EXCEPTION_FLUSH_RX
1196typedef struct
1197{
1198 void *first_gpd;
1199 void *last_gpd;
1200 DCL_UINT32 num;
1201}TTY_CTRL_EXCP_FLUSH_RX_T;
1202
1203//TTY_CMD_EXCEPTION_HIF_POLL
1204typedef struct
1205{
1206 DCL_BOOL reset_event;
1207}TTY_CTRL_EXCP_HIF_POLL_T;
1208
1209typedef enum {
1210 NONE_VFIFO,
1211 RX_VFIFO,
1212 TX_VFIFO,
1213 TXRX_VFIFO
1214} UART_TxRx_VFIFO_support;
1215
1216typedef enum {
1217 RX_BUF,
1218 TX_BUF
1219} UART_buffer;
1220
1221typedef enum {
1222 Compensate_None = 0,
1223 Compensate_Wait,
1224 Compensate_AT,
1225 Compensate_at
1226}UART_Compensate_enum;
1227
1228
1229typedef enum {
1230 len_5=5,
1231 len_6,
1232 len_7,
1233 len_8
1234} UART_bitsPerCharacter;
1235
1236typedef enum {
1237 sb_1=1,
1238 sb_2,
1239 sb_1_5
1240} UART_stopBits;
1241
1242typedef enum {
1243 pa_none=0,
1244 pa_odd,
1245 pa_even,
1246 pa_mark, //k2 md2 6589, add for solving driver/peripheral uart module build error
1247 pa_space
1248} UART_parity;
1249
1250typedef enum {
1251 fc_none=1,
1252 fc_hw,
1253 fc_sw
1254} UART_flowCtrlMode;
1255
1256typedef struct
1257{
1258 UART_baudrate baud;
1259 UART_bitsPerCharacter dataBits;
1260 UART_stopBits stopBits;
1261 UART_parity parity;
1262 UART_flowCtrlMode flowControl;
1263 kal_uint8 xonChar;
1264 kal_uint8 xoffChar;
1265 kal_bool DSRCheck;
1266} UARTDCBStruct;
1267
1268typedef struct
1269{
1270 kal_uint8 EscChar;
1271 kal_uint16 GuardTime;
1272} UART_ESCDetectStruct;
1273
1274typedef struct
1275{
1276 kal_uint8 *rx_buffer; /* data buffer */
1277 kal_uint8 *tx_buffer; /* data buffer */
1278 kal_uint8 *txISR_buffer; /* data buffer */
1279} UART_RingBufferStruct;
1280
1281
1282 typedef enum {
1283 uart_null_buffer=0,
1284 uart_isr_buffer,
1285 uart_normal_buffer
1286 } UART_RingBuffer_Type;
1287
1288 typedef struct
1289 {
1290 UART_RingBuffer_Type type;
1291 kal_uint16 index;
1292 } UART_RingBuffer_SaveIndex;
1293
1294
1295typedef struct
1296{
1297 kal_uint16 tst_port_ps;
1298 kal_uint16 ps_port;
1299 UART_baudrate tst_baudrate_ps;
1300 UART_baudrate ps_baudrate;
1301 kal_bool High_Speed_SIM_Enabled;
1302 kal_uint8 swdbg;
1303 kal_uint8 uart_power_setting; /* For DCM, Start [Set UART POWER], CTI */
1304 kal_uint8 cti_uart_port;
1305 UART_baudrate cti_baudrate;
1306 kal_uint8 tst_port_l1;
1307 UART_baudrate tst_baudrate_l1;
1308 kal_uint8 tst_output_mode;
1309 kal_uint8 usb_logging_mode;
1310 kal_uint16 tst_port_dsp;
1311 UART_baudrate tst_baud_rate_dsp;
1312 kal_uint8 usb_cdrom_config;
1313 kal_uint16 speech_port;
1314 kal_uint16 ndis_port;
1315 kal_uint16 epdg_cmd_port;
1316 kal_uint16 epdg_urc_port;
1317 kal_uint16 epdg_cmd_port_2;
1318 kal_uint16 epdg_urc_port_2;
1319} port_setting_struct;
1320
1321/*start of local parameter struct */
1322
1323typedef struct
1324{
1325 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1326 DCL_UINT16 port;
1327}uart_ready_to_read_ind_struct;
1328
1329typedef struct
1330{
1331 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1332 DCL_UINT16 port;
1333}uart_ready_to_write_ind_struct;
1334
1335 typedef struct
1336{
1337 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1338 DCL_UINT16 port;
1339}uart_dsr_change_ind_struct;
1340
1341 typedef struct
1342{
1343 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1344 DCL_UINT16 port;
1345}uart_escape_detected_ind_struct;
1346
1347 typedef struct
1348{
1349 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1350 DCL_UINT16 port;
1351}uart_plugin_ind_struct;
1352
1353 typedef struct
1354{
1355 LOCAL_PARA_HDR /* LOCAL_PARA_HDR */
1356 DCL_UINT16 port;
1357}uart_plugout_ind_struct;
1358
1359
1360#define UART_CTRLS \
1361 UART_CTRL_INIT_T rUARTCtrlInit;\
1362 UART_CTRL_OPEN_T rUARTCtrlOPEN; \
1363 UART_CTRL_CLOSE_T rUARTCtrlCLOSE; \
1364 UART_CTRL_GET_BYTES_T rUARTCtrlGETBYTES; \
1365 UART_CTRL_PUT_BYTES_T rUARTCtrlPUTBYTES; \
1366 UART_CTRL_RX_AVAIL_T rUARTCtrlRXAVAIL; \
1367 UART_CTRL_TX_AVAIL_T rUARTCtrlTXAVAIL; \
1368 UART_CTRL_PURGE_T rUARTCtrlPURGE; \
1369 UART_CTRL_OWNER_T rUARTCtrlOWNER; \
1370 UART_CTRL_FLOW_CTRL_T rUARTCtrlFLOWCTRL; \
1371 UART_CTRL_CONFIG_ESP_T rUARTCtrlCONFIGESP; \
1372 UART_CTRL_DCB_T rUARTCtrlDCB; \
1373 UART_CTRL_DCD_T rUARTCtrlDCD;\
1374 UART_CTRL_BREAK_T rUARTCtrlBREAK;\
1375 UART_CTRL_CLR_BUFFER_T rUARTCtrlCLRBUFFER;\
1376 UART_CTRL_BAUDRATE_T rUARTCtrlBAUDRATE;\
1377 UART_CTRL_SEND_DATA_T rUARTCtrlSENDDATA;\
1378 UART_CTRL_AUTO_BAUDDIV_T rUARTCtrlAUTOBAUDDIV;\
1379 UART_CTRL_REG_TX_CB_T rUARTCtrlREGTXCB;\
1380 UART_CTRL_REG_RX_CB_T rUARTCtrlREGRXCB;\
1381 UART_CTRL_GET_UART_BYTE_T rUARTCtrlGETUARTBYTE;\
1382 UART_CTRL_GET_UART_BYTE_WITH_TIMEOUT_T rUARTCtrlGETUARTBYTEWithTimeOut;\
1383 UART_CTRL_PUT_UART_BYTE_T rUARTCtrlPUTUARTBYTE;\
1384 UART_CTRL_PUT_UART_BYTES_T rUARTCtrlPUTUARTBYTES;\
1385 UART_CTRL_RI_T rUARTCtrlRI;\
1386 UART_CTRL_DTR_T rUARTCtrlDTR;\
1387 UART_CTRL_RHS_T rUARTCtrlRHS;\
1388 UART_CTRL_SFT_T rUARTCtrlSFT;\
1389 UART_CTRL_POWERON_T rUARTCtrlPoweron;\
1390 UART_CTRL_CHECK_TBE_T rUARTCtrlCheckBUFEMP;\
1391 UART_CTRL_CHECK_TSO_T rUARTCtrlCheckTXSendOut;\
1392 UART_CTRL_GET_TBS_T rUARTCtrlGetTxBufSize;\
1393 UART_CTRL_SLEEP_ON_TX_ENABLE_T rUARTCtrlSleepOnTxEnable;\
1394 UART_CTRL_SLEEP_ENABLE_T rUARTCtrlSleepEnable;\
1395 UART_CTRL_BOOT_PUTBYTES_T rUARTCtrlBootPutBytes;\
1396 UART_CTRL_USE_VFIFO_T rUARTCtrlUseVFifo;\
1397 UART_CTRL_REG_DEF_CB_T rUARTCtrlRegDefCB;\
1398 UART_CTRL_GET_MAXBAUDRATE_T rUARTCtrlGetMaxBaudrate;\
1399 UART_CTRL_GET_FC_T rUARTCtrlGetFC;\
1400 UART_CTRL_NEED_TX_DONE_CB_T rUARTCtrlNeedTxDoneCb; /*new*/\
1401 UART_CTRL_GET_DRV_STATE_T rUARTCtrlGetDrvState; /*new*/\
1402 UART_CTRL_ASSIGN_RX_IOR_T rUARTCtrlAssignRxIor; /*new*/ \
1403 UART_CTRL_PUT_BYTES_IOR_T rUARTCtrlPUTBYTESIOR; /*new*/ \
1404 UART_CTRL_GET_CHUNK_SIZE_T rUARTCtrlGETCHUNKSIZE; /*new*/\
1405 UART_CTRL_GET_MTU_SIZE_T rUARTCtrlGETMTUSIZE; /*new*/\
1406 UART_CTRL_SET_INDICATION_T rUARTCtrlSETINDICATION; /*new*/\
1407 TTY_CTRL_EXCP_TX_GPD_T rTTYCtrlExcpTxGPD; /*new*/\
1408 TTY_CTRL_EXCP_TX_DONE_INFO_T rTTYCtrlExcpTxDoneInfo; /*new*/\
1409 TTY_CTRL_EXCP_HIF_STATE_T rTTYCtrlExcpHifState; /*new*/\
1410 TTY_CTRL_EXCP_ASSIGN_RX_GPD_T rTTYCtrlExcpAssignRxGPD; /*new*/\
1411 TTY_CTRL_EXCP_GET_RX_GPD_T rTTYCtrlExcpGetRxGPD; /*new*/\
1412 TTY_CTRL_EXCP_FLUSH_TX_T rTTYCtrlExcpFlushTx; /*new*/\
1413 TTY_CTRL_EXCP_FLUSH_RX_T rTTYCtrlExcpFlushRx; /*new*/\
1414 TTY_CTRL_EXCP_HIF_POLL_T rTTYCtrlExcpHifPoll; /*new*/
1415
1416#endif
1417#endif
1418
1419
1420#ifdef DCL_DEFINITION_PROTOTYPE
1421#ifndef __DCL_UART_H_PROTOTYPE__
1422#define __DCL_UART_H_PROTOTYPE__
1423
1424typedef DCL_STATUS(*SeriPort_HANLDER_CB)(DCL_DEV dev, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
1425typedef struct
1426{
1427 SIO_TYPE_T DevType;
1428 SeriPort_HANLDER_CB SeriportHandlerCb;
1429}Seriport_HANDLER_T;
1430
1431/*!
1432 * @brief TTY flag
1433 */
1434typedef enum _tty_flag {
1435 /*!
1436 * @brief use new TTY Tx path
1437 */
1438 TTY_FLAG_NEW_TX = (1 << 0),
1439 /*!
1440 * @brief use new TTY Rx path
1441 */
1442 TTY_FLAG_NEW_RX = (1 << 1),
1443} tty_flag_e;
1444
1445typedef DCL_STATUS(*tty_txdone_cb)(DCL_HANDLE handle, module_type source_id, tty_io_request_t *tx_ior);
1446typedef DCL_STATUS(*tty_rx_cb)(DCL_HANDLE handle, module_type source_id, tty_io_request_t *rx_ior);
1447typedef DCL_STATUS(*tty_drv_state_change_cb)(DCL_HANDLE handle, tty_drv_state_e state);
1448
1449
1450
1451/*!
1452* @function DclSerialPort_Open
1453* @brief This function is to open the UART module and get a handle.
1454* @param dev Port number. it can take DCL_UART_DEV as reference
1455* @param flags module_type | FLAGS_UART_USE_VFIFO
1456* module_type: KAL module type enum value
1457* FLAGS_UART_USE_VFIFO: flags that specifies to use Virtual FIFO or not for UART device. Note that it's only valide for eDev with DCL_UART1, DCL_UART2, DCL_UART3(if exists)
1458* [Note] Currently TTY doesn't handle flags!! This parameter is kept for backward compatible.
1459* @result STATUS_FAIL Open failed.
1460* @result STATUS_ALREADY_OPENED This device has already been opened.
1461* @result STATUS_INVALID_DEVICE The device is not valid.
1462* @result STATUS_SET_VFIFO_FAIL Fail to use Vitual FIFO for the UART port.
1463* @result other value a valid handle
1464*
1465*/
1466extern DCL_HANDLE DclSerialPort_Open(DCL_DEV dev, DCL_FLAGS flags);
1467
1468/*!
1469* @function DclSerialPort_Configure
1470* @brief This function is to configure for the UART module. [Note] Currenlty this function is not used.
1471* @param handle a valid handle return by DclSerialPort_Open()
1472* @param configure a ponter to UART_CONFIG_T structure which is a member of union DCL_CONFIGURE_T
1473* @result STATUS_OK successfully configure.
1474* @result STATUS_INVALID_HANDLE It's a invalid handle.
1475* @result STATUS_NOT_OPENED The module has not been opened.
1476* @result STATUS_INVALID_CONFIGURATION the configuration is not valid.
1477*/
1478extern DCL_STATUS DclSerialPort_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
1479
1480/*!
1481* @function DclSerialPort_Control
1482* @brief This function is support UART module commands. It is called to send command to control the UART module.
1483* @param handle a valid handle return by DclSerialPort_Open()
1484* @param cmd dcl uart commands
1485* @param data pointer to the corresponding data structure of command
1486* @result STATUS_OK command is executed successfully.
1487* @result STATUS_INVALID_CMD It's a invalid command.
1488* @result STATUS_INVALID_HANDLE It's a invalid handle.
1489*/
1490extern DCL_STATUS DclSerialPort_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
1491
1492/*!
1493* @function DclSerialPort_Close
1494* @brief This function is to close the UART module.
1495* @param handle hanlde previous got from DclSerialPort_Open()
1496* @result STATUS_OK Successfully close the UART module.
1497* @result STATUS_INVALID_HANDLE It's invalid handle.
1498* @result STATUS_NOT_OPENED The UART module hasn't been opened yet.
1499*/
1500extern DCL_STATUS DclSerialPort_Close(DCL_HANDLE handle);
1501
1502/* ---------------------------------------- General --------------------------------------------- */
1503/*!
1504* @function DclSerialPort_Initialize
1505* @brief This function is to initialize TTY module..
1506* @param none
1507* @result STATUS_OK successfully initialize TTY module.
1508* @result STATUS_FAIL initialized failed..
1509*/
1510extern DCL_STATUS DclSerialPort_Initialize(void);
1511
1512/* ----------------------------------- Export to upper layer --------------------------------------- */
1513/*!
1514* @function [New TTY API] DclSerialPort_UpModuleInit
1515* @brief This function is to initialize/start designated COM Port for upper module.
1516* @param handle a valid handle return by DclSerialPort_Open()
1517* @param module_id upper module id
1518* @param flag TTY COM Port attribute. Currently they are TTY_FLAG_NEW_TX or TTY_FLAG_NEW_RX.
1519* Upper module can initialize flag with new Tx/Rx flow (gpd based) or conventional Tx/Rx (buffer/length based) flow.
1520* ex. New Tx and Conventional Rx - DclSerialPort_UpModuleReinit(handle, module_id, TTY_FLAG_NEW_TX);
1521* @result STATUS_OK Init COM Port device successfully.
1522* @result STATUS_INVALID_HANDLE It's a invalid handle.
1523* @result STATUS_ALREADY_OPENED The COM Port has been initialized by other module.
1524* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1525*/
1526extern DCL_STATUS DclSerialPort_UpModuleInit(DCL_HANDLE handle, module_type module_id, int flag);
1527
1528/*!
1529* @function [New TTY API] DclSerialPort_UpModuleReinit
1530* @brief This function is to re-init TTY COM Port setting. This function is called when owner is changed.
1531* @param handle a valid handle return by DclSerialPort_Open()
1532* @param module_id upper module id
1533* @param flag TTY COM Port attribute. Currently they are TTY_FLAG_NEW_TX or TTY_FLAG_NEW_RX.
1534* Upper module can re-init flag with new Tx/Rx flow (gpd based) or conventional Tx/Rx (buffer/length based) flow.
1535* ex. Reinit to New Tx and Conventional Rx - DclSerialPort_UpModuleReinit(handle, module_id, TTY_FLAG_NEW_TX);
1536* @result STATUS_OK Re-Init COM Port device successfully.
1537* @result STATUS_INVALID_HANDLE It's a invalid handle.
1538* @result STATUS_NOT_OPENED The COM Port has not been initialized.
1539* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1540*/
1541extern DCL_STATUS DclSerialPort_UpModuleReinit(DCL_HANDLE handle, module_type module_id, int flag);
1542
1543/*!
1544* @function [New TTY API] DclSerialPort_UpModuleDeinit
1545* @brief This function is to de-init/de-register COM Port.
1546* @param handle a valid handle return by DclSerialPort_Open()
1547* @result STATUS_OK Deinit COM Port device successfully.
1548* @result STATUS_INVALID_HANDLE It's a invalid handle.
1549* @result STATUS_NOT_OPENED The COM Port has not been initialized.
1550* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1551*/
1552extern DCL_STATUS DclSerialPort_UpModuleDeinit(DCL_HANDLE handle);
1553
1554/*!
1555* @function [New TTY API] DclSerialPort_UpModuleRegisterCb
1556* @brief This function is for upper layer module to register callback function.
1557* @param handle a valid handle return by DclSerialPort_Open()
1558* @param rx_cb rx callback function, driver send receiving data to upper layer through this rx callback function
1559* @param tx_done_cb tx done callback function, this callback function will be called when data has been sent
1560* @param drv_state_change_cb driver state change callback function, it notify the upper layer module when driver state is changed, ex. USB disconnect
1561* @result STATUS_OK Register callback function successfully.
1562* @result STATUS_INVALID_HANDLE It's a invalid handle.
1563* @result STATUS_NOT_OPENED The COM Port has not been initialized.
1564* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1565* @result STATUS_FAIL Failed for other reasons.
1566*/
1567extern DCL_STATUS DclSerialPort_UpModuleRegisterCb(DCL_HANDLE handle, tty_rx_cb rx_cb, tty_txdone_cb tx_done_cb, tty_drv_state_change_cb drv_state_change_cb);
1568
1569/*!
1570* @function [New TTY API] DclSerialPort_UpModuleTransmit
1571* @brief This function is to transmit data to COM Port in ior format.
1572* @param handle a valid handle return by DclSerialPort_Open()
1573* @param ior pointer to tx io request which is sent to COM Port driver
1574* @result STATUS_OK Transmit ior successfully.
1575* @result STATUS_INVALID_HANDLE It's a invalid handle.
1576* @result STATUS_FAIL Failed for other reasons.
1577*/
1578extern DCL_STATUS DclSerialPort_UpModuleTransmit(DCL_HANDLE handle, tty_io_request_t *ior);
1579
1580/*!
1581* @function [New TTY API] DclSerialPort_UpModuleTransmitLight
1582* @brief This function is to transmit data to COM Port in ior format and light-weight.
1583* Before user use this Tx function, it must calculate tx checksum and flush GPD in advance.
1584* @param handle a valid handle return by DclSerialPort_Open()
1585* @param ior pointer to tx io request which is sent to COM Port driver
1586* @result STATUS_OK Transmit ior successfully.
1587* @result STATUS_INVALID_HANDLE It's a invalid handle.
1588* @result STATUS_FAIL Failed for other reasons.
1589*/
1590extern DCL_STATUS DclSerialPort_UpModuleTransmitLight(DCL_HANDLE handle, tty_io_request_t *ior);
1591
1592/*!
1593* @function [New TTY API] DclSerialPort_UpModuleAssignRxIor
1594* @brief This function is to assign empty Rx ior to driver for data receiving.
1595* @param handle a valid handle return by DclSerialPort_Open()
1596* @param rx_ior pointer to rx io request for data receiving
1597* @result STATUS_OK Assign Rx ior successfully.
1598* @result STATUS_INVALID_HANDLE It's a invalid handle.
1599* @result STATUS_FAIL Failed for other reasons.
1600*/
1601extern DCL_STATUS DclSerialPort_UpModuleAssignRxIor(DCL_HANDLE handle, tty_io_request_t *rx_ior);
1602
1603/* ------------------------------------ Export to driver ------------------------------------------- */
1604/*!
1605* @function DclSerialPort_DrvRegisterCb
1606* @brief This function is to register callback funtion for the UART module or COM Port class driver.
1607* @param handle a valid handle return by DclSerialPort_Open()
1608* @param seriport_handler the structure contains callback function and device type.
1609 TTY would send commands (SIO/UART/USB/TTY/...) to driver through this callback function when the corresponding event happens.
1610* @result STATUS_OK successful.
1611* @result STATUS_INVALID_HANDLE It's a invalid handle.
1612* @result STATUS_ALREADY_OPENED This device has already been opened.
1613* @result STATUS_INVALID_ARGUMENT The parameter is invalid, ex. uart_handler_cb is NULL.
1614*/
1615extern DCL_STATUS DclSerialPort_DrvRegisterCb(DCL_HANDLE handle, Seriport_HANDLER_T* seriport_handler);
1616
1617/*!
1618* @function DclSerialPort_DrvDeRegisterCb
1619* @brief This function is to De-register callback funtion for the UART module or COM Port class driver.
1620* @param handle a valid handle return by DclSerialPort_Open()
1621*
1622* @result STATUS_OK successful.
1623* @result STATUS_INVALID_HANDLE It's a invalid handle.
1624* @result STATUS_INVALID_OPERATION This device has already been de-registered or driver state is attached.
1625*/
1626extern DCL_STATUS DclSerialPort_DrvDeRegisterCb(DCL_HANDLE handle);
1627
1628/*!
1629* @function [New TTY API] DclSerialPort_DrvAttach
1630* @brief This function is for driver to inform TTY that the device is attached/connected.
1631* @param handle a valid handle return by DclSerialPort_Open()
1632* @result STATUS_OK successful.
1633* @result STATUS_INVALID_HANDLE It's a invalid handle.
1634* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1635*/
1636extern DCL_STATUS DclSerialPort_DrvAttach(DCL_HANDLE handle);
1637
1638/*!
1639* @function [New TTY API] DclSerialPort_DrvDetach
1640* @brief This function is for driver to inform TTY that the device is detached/disconnected.
1641* @param handle a valid handle return by DclSerialPort_Open()
1642* @result STATUS_OK successful.
1643* @result STATUS_INVALID_HANDLE It's a invalid handle.
1644* @result STATUS_DEVICE_NOT_EXIST The corresponding device driver of COM Port has not been initialized.
1645*/
1646extern DCL_STATUS DclSerialPort_DrvDetach(DCL_HANDLE handle);
1647
1648/*!
1649* @function [New TTY API] DclSerialPort_DrvRx
1650* @brief This function is for driver to send back the received data to TTY/upper layer.
1651* @param handle a valid handle return by DclSerialPort_Open()
1652* @param source_id driver module id
1653* @param rx_ior received data with ior format
1654* @result STATUS_OK successfully register the callback function.
1655* @result STATUS_INVALID_HANDLE It's a invalid handle.
1656* @result STATUS_NOT_OPENED The COM Port is not opened by upper layer.
1657*/
1658extern DCL_STATUS DclSerialPort_DrvRx(DCL_HANDLE handle, module_type source_id, void *rx_ior);
1659
1660/*!
1661* @function [New TTY API] DclSerialPort_DrvTxDone
1662* @brief This function is for driver to send back the transmitted (tx done) data to TTY/upper layer.
1663* This function is called if "need tx done callback" is configured YES.
1664* @param handle a valid handle return by DclSerialPort_Open()
1665* @param source_id driver module id
1666* @param tx_ior transmitted data with ior format
1667* @result STATUS_OK successful.
1668* @result STATUS_INVALID_HANDLE It's a invalid handle.
1669* @result STATUS_NOT_OPENED The COM Port is not opened by upper layer.
1670*/
1671extern DCL_STATUS DclSerialPort_DrvTxDone(DCL_HANDLE handle, module_type source_id, void *tx_ior);
1672
1673
1674#endif // #ifndef __DCL_UART_H_PROTOTYPE__
1675#endif // #ifdef DCL_DEFINITION_PROTOTYPE
1676