1 /*******************************************************************************
3 * This software is supplied by Renesas Electronics Corporation and is only
4 * intended for use with Renesas products. No other uses are authorized. This
5 * software is owned by Renesas Electronics Corporation and is protected under
6 * all applicable laws, including copyright laws.
7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
16 * Renesas reserves the right, without notice, to make changes to this software
17 * and to discontinue the availability of this software. By using this software,
18 * you agree to the additional terms and conditions found by accessing the
20 * http://www.renesas.com/disclaimer
21 * Copyright (C) 2012 - 2014 Renesas Electronics Corporation. All rights reserved.
22 *******************************************************************************/
23 /*******************************************************************************
24 * File Name : usb0_function_lib.c
26 * $Date:: 2014-07-09 16:29:19 +0900#$
31 * Description : RZ/A1H R7S72100 USB Sample Program
34 *******************************************************************************/
37 /*******************************************************************************
38 Includes <System Includes> , "Project Includes"
39 *******************************************************************************/
40 #include "usb0_function.h"
43 /*******************************************************************************
45 *******************************************************************************/
48 /*******************************************************************************
50 *******************************************************************************/
53 /*******************************************************************************
54 Imported global variables and functions (from other files)
55 *******************************************************************************/
58 /*******************************************************************************
59 Exported global variables and functions (to be accessed by other files)
60 *******************************************************************************/
63 /*******************************************************************************
64 Private global variables and functions
65 *******************************************************************************/
68 /*******************************************************************************
69 * Function Name: usb0_function_enable_brdy_int
70 * Description : Enables BRDY interrupt in the pipe spceified by the argument.
71 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling
72 * : BRDY. Enables BRDY interrupt in the pipe specified by the argument
73 * : in the disabled status. After enabling BRDY, recover all
74 * : BEMP/NRDY/BRDY disabled/enabled status.
75 * Arguments : uint16_t pipe ; pipe Number
77 *******************************************************************************/
78 void usb0_function_enable_brdy_int (uint16_t pipe
)
80 /* enable brdy interrupt */
81 USB200
.BRDYENB
|= (uint16_t)g_usb0_function_bit_set
[pipe
];
84 /*******************************************************************************
85 * Function Name: usb0_function_disable_brdy_int
86 * Description : Disables BRDY interrupt in the pipe spceified by the argument.
87 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling
88 * : BRDY. Enables BRDY interrupt in the pipe specified by the argument
89 * : in the disabled status. After disabling BRDY, recover all
90 * : BEMP/NRDY/BRDY disabled/enabled status.
91 * Arguments : uint16_t pipe ; pipe Number
93 *******************************************************************************/
94 void usb0_function_disable_brdy_int (uint16_t pipe
)
96 /* disable brdy interrupt */
97 USB200
.BRDYENB
&= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
100 /*******************************************************************************
101 * Function Name: usb0_function_clear_brdy_sts
102 * Description : Clear BRDY interrupt status in the pipe spceified by the argument.
103 * Arguments : uint16_t pipe ; pipe Number
104 * Return Value : none
105 *******************************************************************************/
106 void usb0_function_clear_brdy_sts (uint16_t pipe
)
108 /* clear brdy status */
109 USB200
.BRDYSTS
= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
112 /*******************************************************************************
113 * Function Name: usb0_function_enable_bemp_int
114 * Description : Enables BEMP interrupt in the pipe spceified by the argument.
115 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling
116 * : BEMP. Enables BEMP interrupt in the pipe specified by the argument
117 * : in the disabled status. After enabling BEMP, recover all
118 * : BEMP/NRDY/BRDY disabled/enabled status.
119 * Arguments : uint16_t pipe ; pipe Number
120 * Return Value : none
121 *******************************************************************************/
122 void usb0_function_enable_bemp_int (uint16_t pipe
)
124 /* enable bemp interrupt */
125 USB200
.BEMPENB
|= (uint16_t)g_usb0_function_bit_set
[pipe
];
128 /*******************************************************************************
129 * Function Name: usb0_function_disable_bemp_int
130 * Description : Disables BEMP interrupt in the pipe spceified by the argument.
131 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling
132 * : BEMP. Enables BEMP interrupt in the pipe specified by the argument
133 * : in the disabled status. After enabling BEMP, recover all
134 * : BEMP/NRDY/BRDY disabled/enabled status.
135 * Arguments : uint16_t pipe ; pipe Number
136 * Return Value : none
137 *******************************************************************************/
138 void usb0_function_disable_bemp_int (uint16_t pipe
)
140 /* disable bemp interrupt */
141 USB200
.BEMPENB
&= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
144 /*******************************************************************************
145 * Function Name: usb0_function_clear_bemp_sts
146 * Description : Clear BEMP interrupt status in the pipe spceified by the argument.
147 * Arguments : uint16_t pipe ; pipe Number
148 * Return Value : none
149 *******************************************************************************/
150 void usb0_function_clear_bemp_sts (uint16_t pipe
)
152 /* clear bemp status */
153 USB200
.BEMPSTS
= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
156 /*******************************************************************************
157 * Function Name: usb0_function_enable_nrdy_int
158 * Description : Enables NRDY interrupt in the pipe spceified by the argument.
159 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before enabling
160 * : NRDY. Enables NRDY interrupt in the pipe specified by the argument
161 * : in the disabled status. After enabling NRDY, recover all
162 * : BEMP/NRDY/BRDY disabled/enabled status.
163 * Arguments : uint16_t pipe ; pipe Number
164 * Return Value : none
165 *******************************************************************************/
166 void usb0_function_enable_nrdy_int (uint16_t pipe
)
168 /* enable nrdy interrupt */
169 USB200
.NRDYENB
|= (uint16_t)g_usb0_function_bit_set
[pipe
];
172 /*******************************************************************************
173 * Function Name: usb0_function_disable_nrdy_int
174 * Description : Disables NRDY interrupt in the pipe spceified by the argument.
175 * : Disables BEMP/NRDY/BRDY interrupts in all pipes before disabling
176 * : NRDY. Disables NRDY interrupt in the pipe specified by the argument
177 * : in the disabled status. After disabling NRDY, recover all
178 * : BEMP/NRDY/BRDY disabled/enabled status.
179 * Arguments : uint16_t pipe ; pipe Number
180 * Return Value : none
181 *******************************************************************************/
182 void usb0_function_disable_nrdy_int (uint16_t pipe
)
184 /* disable nrdy interrupt */
185 USB200
.NRDYENB
&= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
188 /*******************************************************************************
189 * Function Name: usb0_function_clear_nrdy_sts
190 * Description : Clear NRDY interrupt status in the pipe spceified by the argument.
191 * Arguments : uint16_t pipe ; pipe Number
192 * Return Value : none
193 *******************************************************************************/
194 void usb0_function_clear_nrdy_sts (uint16_t pipe
)
196 /* clear nrdy status */
197 USB200
.NRDYSTS
= (uint16_t)~(g_usb0_function_bit_set
[pipe
]);
200 /*******************************************************************************
201 * Function Name: usb0_function_is_hispeed
202 * Description : Returns the result of USB reset hand shake (RHST) as
205 * Return Value : USB_FUNCTION_HIGH_SPEED ; Hi-Speed
206 * : USB_FUNCTION_FULL_SPEED ; Full-Speed
207 * : LOW_SPEED ; Low-Speed
208 * : USB_FUNCTION_NON_SPEED ; error
209 *******************************************************************************/
210 uint16_t usb0_function_is_hispeed (void)
215 rhst
= RZA_IO_RegRead_16(&USB200
.DVSTCTR0
, USB_DVSTCTR0_RHST_SHIFT
, USB_DVSTCTR0_RHST
);
217 if (rhst
== USB_FUNCTION_HSMODE
)
219 speed
= USB_FUNCTION_HIGH_SPEED
;
221 else if (rhst
== USB_FUNCTION_FSMODE
)
223 speed
= USB_FUNCTION_FULL_SPEED
;
225 else if (rhst
== USB_FUNCTION_LSMODE
)
227 speed
= USB_FUNCTION_LOW_SPEED
;
231 speed
= USB_FUNCTION_NON_SPEED
;
237 /*******************************************************************************
238 * Function Name: usb0_function_is_hispeed_enable
239 * Description : Returns the USB High-Speed connection enabled status as
242 * Return Value : DEVDRV_USBF_YES : Hi-Speed Enable
243 * : DEVDRV_USBF_NO : Hi-Speed Disable
244 *******************************************************************************/
245 uint16_t usb0_function_is_hispeed_enable (void)
249 ret
= DEVDRV_USBF_NO
;
251 if (RZA_IO_RegRead_16(&USB200
.SYSCFG0
, USB_SYSCFG_HSE_SHIFT
, USB_SYSCFG_HSE
) == 1)
253 ret
= DEVDRV_USBF_YES
;
259 /*******************************************************************************
260 * Function Name: usb0_function_set_pid_buf
261 * Description : Enables communicaqtion in the pipe specified by the argument
263 * Arguments : uint16_t pipe ; pipe Number
264 * Return Value : none
265 *******************************************************************************/
266 void usb0_function_set_pid_buf (uint16_t pipe
)
270 pid
= usb0_function_get_pid(pipe
);
272 if (pid
== DEVDRV_USBF_PID_STALL2
)
274 usb0_function_set_pid_nak(pipe
);
279 case USB_FUNCTION_PIPE0
:
280 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
282 USB_DCPCTR_PID_SHIFT
,
286 case USB_FUNCTION_PIPE1
:
287 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
289 USB_PIPEnCTR_1_5_PID_SHIFT
,
290 USB_PIPEnCTR_1_5_PID
);
293 case USB_FUNCTION_PIPE2
:
294 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
296 USB_PIPEnCTR_1_5_PID_SHIFT
,
297 USB_PIPEnCTR_1_5_PID
);
300 case USB_FUNCTION_PIPE3
:
301 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
303 USB_PIPEnCTR_1_5_PID_SHIFT
,
304 USB_PIPEnCTR_1_5_PID
);
307 case USB_FUNCTION_PIPE4
:
308 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
310 USB_PIPEnCTR_1_5_PID_SHIFT
,
311 USB_PIPEnCTR_1_5_PID
);
314 case USB_FUNCTION_PIPE5
:
315 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
317 USB_PIPEnCTR_1_5_PID_SHIFT
,
318 USB_PIPEnCTR_1_5_PID
);
321 case USB_FUNCTION_PIPE6
:
322 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
324 USB_PIPEnCTR_6_8_PID_SHIFT
,
325 USB_PIPEnCTR_6_8_PID
);
328 case USB_FUNCTION_PIPE7
:
329 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
331 USB_PIPEnCTR_6_8_PID_SHIFT
,
332 USB_PIPEnCTR_6_8_PID
);
335 case USB_FUNCTION_PIPE8
:
336 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
338 USB_PIPEnCTR_6_8_PID_SHIFT
,
339 USB_PIPEnCTR_6_8_PID
);
342 case USB_FUNCTION_PIPE9
:
343 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
345 USB_PIPEnCTR_9_PID_SHIFT
,
349 case USB_FUNCTION_PIPEA
:
350 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
352 USB_PIPEnCTR_A_F_PID_SHIFT
,
353 USB_PIPEnCTR_A_F_PID
);
356 case USB_FUNCTION_PIPEB
:
357 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
359 USB_PIPEnCTR_A_F_PID_SHIFT
,
360 USB_PIPEnCTR_A_F_PID
);
363 case USB_FUNCTION_PIPEC
:
364 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
366 USB_PIPEnCTR_A_F_PID_SHIFT
,
367 USB_PIPEnCTR_A_F_PID
);
370 case USB_FUNCTION_PIPED
:
371 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
373 USB_PIPEnCTR_A_F_PID_SHIFT
,
374 USB_PIPEnCTR_A_F_PID
);
377 case USB_FUNCTION_PIPEE
:
378 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
380 USB_PIPEnCTR_A_F_PID_SHIFT
,
381 USB_PIPEnCTR_A_F_PID
);
384 case USB_FUNCTION_PIPEF
:
385 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
387 USB_PIPEnCTR_A_F_PID_SHIFT
,
388 USB_PIPEnCTR_A_F_PID
);
396 /*******************************************************************************
397 * Function Name: usb0_function_set_pid_nak
398 * Description : Disables communication (NAK) in the pipe specified by the argument.
399 * : When the pipe status was enabling communication (BUF) before
400 * : executing before executing this function, waits in the software
401 * : until the pipe becomes ready after setting disabled.
402 * Arguments : uint16_t pipe ; pipe Number
403 * Return Value : none
404 *******************************************************************************/
405 void usb0_function_set_pid_nak (uint16_t pipe
)
411 pid
= usb0_function_get_pid(pipe
);
413 if (pid
== DEVDRV_USBF_PID_STALL2
)
415 usb0_function_set_pid_stall(pipe
);
420 case USB_FUNCTION_PIPE0
:
421 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
423 USB_DCPCTR_PID_SHIFT
,
427 case USB_FUNCTION_PIPE1
:
428 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
430 USB_PIPEnCTR_1_5_PID_SHIFT
,
431 USB_PIPEnCTR_1_5_PID
);
434 case USB_FUNCTION_PIPE2
:
435 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
437 USB_PIPEnCTR_1_5_PID_SHIFT
,
438 USB_PIPEnCTR_1_5_PID
);
441 case USB_FUNCTION_PIPE3
:
442 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
444 USB_PIPEnCTR_1_5_PID_SHIFT
,
445 USB_PIPEnCTR_1_5_PID
);
448 case USB_FUNCTION_PIPE4
:
449 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
451 USB_PIPEnCTR_1_5_PID_SHIFT
,
452 USB_PIPEnCTR_1_5_PID
);
455 case USB_FUNCTION_PIPE5
:
456 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
458 USB_PIPEnCTR_1_5_PID_SHIFT
,
459 USB_PIPEnCTR_1_5_PID
);
462 case USB_FUNCTION_PIPE6
:
463 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
465 USB_PIPEnCTR_6_8_PID_SHIFT
,
466 USB_PIPEnCTR_6_8_PID
);
469 case USB_FUNCTION_PIPE7
:
470 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
472 USB_PIPEnCTR_6_8_PID_SHIFT
,
473 USB_PIPEnCTR_6_8_PID
);
476 case USB_FUNCTION_PIPE8
:
477 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
479 USB_PIPEnCTR_6_8_PID_SHIFT
,
480 USB_PIPEnCTR_6_8_PID
);
483 case USB_FUNCTION_PIPE9
:
484 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
486 USB_PIPEnCTR_9_PID_SHIFT
,
490 case USB_FUNCTION_PIPEA
:
491 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
493 USB_PIPEnCTR_A_F_PID_SHIFT
,
494 USB_PIPEnCTR_A_F_PID
);
497 case USB_FUNCTION_PIPEB
:
498 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
500 USB_PIPEnCTR_A_F_PID_SHIFT
,
501 USB_PIPEnCTR_A_F_PID
);
504 case USB_FUNCTION_PIPEC
:
505 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
507 USB_PIPEnCTR_A_F_PID_SHIFT
,
508 USB_PIPEnCTR_A_F_PID
);
511 case USB_FUNCTION_PIPED
:
512 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
514 USB_PIPEnCTR_A_F_PID_SHIFT
,
515 USB_PIPEnCTR_A_F_PID
);
518 case USB_FUNCTION_PIPEE
:
519 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
521 USB_PIPEnCTR_A_F_PID_SHIFT
,
522 USB_PIPEnCTR_A_F_PID
);
525 case USB_FUNCTION_PIPEF
:
526 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
528 USB_PIPEnCTR_A_F_PID_SHIFT
,
529 USB_PIPEnCTR_A_F_PID
);
536 if (pid
== DEVDRV_USBF_PID_BUF
)
538 for (loop
= 0; loop
< 200; loop
++)
542 case USB_FUNCTION_PIPE0
:
543 pbusy
= RZA_IO_RegRead_16(&USB200
.DCPCTR
,
544 USB_DCPCTR_PBUSY_SHIFT
,
548 case USB_FUNCTION_PIPE1
:
549 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE1CTR
,
550 USB_PIPEnCTR_1_5_PBUSY_SHIFT
,
551 USB_PIPEnCTR_1_5_PBUSY
);
554 case USB_FUNCTION_PIPE2
:
555 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE2CTR
,
556 USB_PIPEnCTR_1_5_PBUSY_SHIFT
,
557 USB_PIPEnCTR_1_5_PBUSY
);
560 case USB_FUNCTION_PIPE3
:
561 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE3CTR
,
562 USB_PIPEnCTR_1_5_PBUSY_SHIFT
,
563 USB_PIPEnCTR_1_5_PBUSY
);
566 case USB_FUNCTION_PIPE4
:
567 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE4CTR
,
568 USB_PIPEnCTR_1_5_PBUSY_SHIFT
,
569 USB_PIPEnCTR_1_5_PBUSY
);
572 case USB_FUNCTION_PIPE5
:
573 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE5CTR
,
574 USB_PIPEnCTR_1_5_PBUSY_SHIFT
,
575 USB_PIPEnCTR_1_5_PBUSY
);
578 case USB_FUNCTION_PIPE6
:
579 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE6CTR
,
580 USB_PIPEnCTR_6_8_PBUSY_SHIFT
,
581 USB_PIPEnCTR_6_8_PBUSY
);
584 case USB_FUNCTION_PIPE7
:
585 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE7CTR
,
586 USB_PIPEnCTR_6_8_PBUSY_SHIFT
,
587 USB_PIPEnCTR_6_8_PBUSY
);
590 case USB_FUNCTION_PIPE8
:
591 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE8CTR
,
592 USB_PIPEnCTR_6_8_PBUSY_SHIFT
,
593 USB_PIPEnCTR_6_8_PBUSY
);
596 case USB_FUNCTION_PIPE9
:
597 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPE9CTR
,
598 USB_PIPEnCTR_9_PBUSY_SHIFT
,
599 USB_PIPEnCTR_9_PBUSY
);
602 case USB_FUNCTION_PIPEA
:
603 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPEACTR
,
604 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
605 USB_PIPEnCTR_A_F_PBUSY
);
608 case USB_FUNCTION_PIPEB
:
609 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPEBCTR
,
610 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
611 USB_PIPEnCTR_A_F_PBUSY
);
614 case USB_FUNCTION_PIPEC
:
615 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPECCTR
,
616 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
617 USB_PIPEnCTR_A_F_PBUSY
);
620 case USB_FUNCTION_PIPED
:
621 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPEDCTR
,
622 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
623 USB_PIPEnCTR_A_F_PBUSY
);
626 case USB_FUNCTION_PIPEE
:
627 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPEECTR
,
628 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
629 USB_PIPEnCTR_A_F_PBUSY
);
632 case USB_FUNCTION_PIPEF
:
633 pbusy
= RZA_IO_RegRead_16(&USB200
.PIPEFCTR
,
634 USB_PIPEnCTR_A_F_PBUSY_SHIFT
,
635 USB_PIPEnCTR_A_F_PBUSY
);
647 Userdef_USB_usb0_function_delay_500ns();
652 /*******************************************************************************
653 * Function Name: usb0_function_set_pid_stall
654 * Description : Disables communication (STALL) in the pipe specified by the
656 * Arguments : uint16_t pipe ; pipe Number
657 * Return Value : none
658 *******************************************************************************/
659 void usb0_function_set_pid_stall (uint16_t pipe
)
663 pid
= usb0_function_get_pid(pipe
);
664 if (pid
== DEVDRV_USBF_PID_BUF
)
668 case USB_FUNCTION_PIPE0
:
669 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
670 DEVDRV_USBF_PID_STALL2
,
671 USB_DCPCTR_PID_SHIFT
,
675 case USB_FUNCTION_PIPE1
:
676 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
677 DEVDRV_USBF_PID_STALL2
,
678 USB_PIPEnCTR_1_5_PID_SHIFT
,
679 USB_PIPEnCTR_1_5_PID
);
682 case USB_FUNCTION_PIPE2
:
683 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
684 DEVDRV_USBF_PID_STALL2
,
685 USB_PIPEnCTR_1_5_PID_SHIFT
,
686 USB_PIPEnCTR_1_5_PID
);
689 case USB_FUNCTION_PIPE3
:
690 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
691 DEVDRV_USBF_PID_STALL2
,
692 USB_PIPEnCTR_1_5_PID_SHIFT
,
693 USB_PIPEnCTR_1_5_PID
);
696 case USB_FUNCTION_PIPE4
:
697 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
698 DEVDRV_USBF_PID_STALL2
,
699 USB_PIPEnCTR_1_5_PID_SHIFT
,
700 USB_PIPEnCTR_1_5_PID
);
703 case USB_FUNCTION_PIPE5
:
704 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
705 DEVDRV_USBF_PID_STALL2
,
706 USB_PIPEnCTR_1_5_PID_SHIFT
,
707 USB_PIPEnCTR_1_5_PID
);
710 case USB_FUNCTION_PIPE6
:
711 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
712 DEVDRV_USBF_PID_STALL2
,
713 USB_PIPEnCTR_6_8_PID_SHIFT
,
714 USB_PIPEnCTR_6_8_PID
);
717 case USB_FUNCTION_PIPE7
:
718 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
719 DEVDRV_USBF_PID_STALL2
,
720 USB_PIPEnCTR_6_8_PID_SHIFT
,
721 USB_PIPEnCTR_6_8_PID
);
724 case USB_FUNCTION_PIPE8
:
725 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
726 DEVDRV_USBF_PID_STALL2
,
727 USB_PIPEnCTR_6_8_PID_SHIFT
,
728 USB_PIPEnCTR_6_8_PID
);
731 case USB_FUNCTION_PIPE9
:
732 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
733 DEVDRV_USBF_PID_STALL2
,
734 USB_PIPEnCTR_9_PID_SHIFT
,
738 case USB_FUNCTION_PIPEA
:
739 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
740 DEVDRV_USBF_PID_STALL2
,
741 USB_PIPEnCTR_A_F_PID_SHIFT
,
742 USB_PIPEnCTR_A_F_PID
);
745 case USB_FUNCTION_PIPEB
:
746 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
747 DEVDRV_USBF_PID_STALL2
,
748 USB_PIPEnCTR_A_F_PID_SHIFT
,
749 USB_PIPEnCTR_A_F_PID
);
752 case USB_FUNCTION_PIPEC
:
753 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
754 DEVDRV_USBF_PID_STALL2
,
755 USB_PIPEnCTR_A_F_PID_SHIFT
,
756 USB_PIPEnCTR_A_F_PID
);
759 case USB_FUNCTION_PIPED
:
760 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
761 DEVDRV_USBF_PID_STALL2
,
762 USB_PIPEnCTR_A_F_PID_SHIFT
,
763 USB_PIPEnCTR_A_F_PID
);
766 case USB_FUNCTION_PIPEE
:
767 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
768 DEVDRV_USBF_PID_STALL2
,
769 USB_PIPEnCTR_A_F_PID_SHIFT
,
770 USB_PIPEnCTR_A_F_PID
);
773 case USB_FUNCTION_PIPEF
:
774 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
775 DEVDRV_USBF_PID_STALL2
,
776 USB_PIPEnCTR_A_F_PID_SHIFT
,
777 USB_PIPEnCTR_A_F_PID
);
788 case USB_FUNCTION_PIPE0
:
789 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
790 DEVDRV_USBF_PID_STALL
,
791 USB_DCPCTR_PID_SHIFT
,
795 case USB_FUNCTION_PIPE1
:
796 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
797 DEVDRV_USBF_PID_STALL
,
798 USB_PIPEnCTR_1_5_PID_SHIFT
,
799 USB_PIPEnCTR_1_5_PID
);
802 case USB_FUNCTION_PIPE2
:
803 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
804 DEVDRV_USBF_PID_STALL
,
805 USB_PIPEnCTR_1_5_PID_SHIFT
,
806 USB_PIPEnCTR_1_5_PID
);
809 case USB_FUNCTION_PIPE3
:
810 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
811 DEVDRV_USBF_PID_STALL
,
812 USB_PIPEnCTR_1_5_PID_SHIFT
,
813 USB_PIPEnCTR_1_5_PID
);
816 case USB_FUNCTION_PIPE4
:
817 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
818 DEVDRV_USBF_PID_STALL
,
819 USB_PIPEnCTR_1_5_PID_SHIFT
,
820 USB_PIPEnCTR_1_5_PID
);
823 case USB_FUNCTION_PIPE5
:
824 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
825 DEVDRV_USBF_PID_STALL
,
826 USB_PIPEnCTR_1_5_PID_SHIFT
,
827 USB_PIPEnCTR_1_5_PID
);
830 case USB_FUNCTION_PIPE6
:
831 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
832 DEVDRV_USBF_PID_STALL
,
833 USB_PIPEnCTR_6_8_PID_SHIFT
,
834 USB_PIPEnCTR_6_8_PID
);
837 case USB_FUNCTION_PIPE7
:
838 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
839 DEVDRV_USBF_PID_STALL
,
840 USB_PIPEnCTR_6_8_PID_SHIFT
,
841 USB_PIPEnCTR_6_8_PID
);
844 case USB_FUNCTION_PIPE8
:
845 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
846 DEVDRV_USBF_PID_STALL
,
847 USB_PIPEnCTR_6_8_PID_SHIFT
,
848 USB_PIPEnCTR_6_8_PID
);
851 case USB_FUNCTION_PIPE9
:
852 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
853 DEVDRV_USBF_PID_STALL
,
854 USB_PIPEnCTR_9_PID_SHIFT
,
858 case USB_FUNCTION_PIPEA
:
859 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
860 DEVDRV_USBF_PID_STALL
,
861 USB_PIPEnCTR_A_F_PID_SHIFT
,
862 USB_PIPEnCTR_A_F_PID
);
865 case USB_FUNCTION_PIPEB
:
866 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
867 DEVDRV_USBF_PID_STALL
,
868 USB_PIPEnCTR_A_F_PID_SHIFT
,
869 USB_PIPEnCTR_A_F_PID
);
872 case USB_FUNCTION_PIPEC
:
873 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
874 DEVDRV_USBF_PID_STALL
,
875 USB_PIPEnCTR_A_F_PID_SHIFT
,
876 USB_PIPEnCTR_A_F_PID
);
879 case USB_FUNCTION_PIPED
:
880 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
881 DEVDRV_USBF_PID_STALL
,
882 USB_PIPEnCTR_A_F_PID_SHIFT
,
883 USB_PIPEnCTR_A_F_PID
);
886 case USB_FUNCTION_PIPEE
:
887 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
888 DEVDRV_USBF_PID_STALL
,
889 USB_PIPEnCTR_A_F_PID_SHIFT
,
890 USB_PIPEnCTR_A_F_PID
);
893 case USB_FUNCTION_PIPEF
:
894 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
895 DEVDRV_USBF_PID_STALL
,
896 USB_PIPEnCTR_A_F_PID_SHIFT
,
897 USB_PIPEnCTR_A_F_PID
);
906 /*******************************************************************************
907 * Function Name: usb0_function_clear_pid_stall
908 * Description : Disables communication (NAK) in the pipe specified by the argument.
909 * Arguments : uint16_t pipe ; pipe Number
910 * Return Value : none
911 *******************************************************************************/
912 void usb0_function_clear_pid_stall (uint16_t pipe
)
914 usb0_function_set_pid_nak(pipe
);
917 /*******************************************************************************
918 * Function Name: usb0_function_get_pid
919 * Description : Returns the pipe state specified by the argument.
920 * Arguments : uint16_t pipe ; Pipe Number
922 *******************************************************************************/
923 uint16_t usb0_function_get_pid (uint16_t pipe
)
929 case USB_FUNCTION_PIPE0
:
930 pid
= RZA_IO_RegRead_16(&USB200
.DCPCTR
,
931 USB_DCPCTR_PID_SHIFT
,
935 case USB_FUNCTION_PIPE1
:
936 pid
= RZA_IO_RegRead_16(&USB200
.PIPE1CTR
,
937 USB_PIPEnCTR_1_5_PID_SHIFT
,
938 USB_PIPEnCTR_1_5_PID
);
941 case USB_FUNCTION_PIPE2
:
942 pid
= RZA_IO_RegRead_16(&USB200
.PIPE2CTR
,
943 USB_PIPEnCTR_1_5_PID_SHIFT
,
944 USB_PIPEnCTR_1_5_PID
);
947 case USB_FUNCTION_PIPE3
:
948 pid
= RZA_IO_RegRead_16(&USB200
.PIPE3CTR
,
949 USB_PIPEnCTR_1_5_PID_SHIFT
,
950 USB_PIPEnCTR_1_5_PID
);
953 case USB_FUNCTION_PIPE4
:
954 pid
= RZA_IO_RegRead_16(&USB200
.PIPE4CTR
,
955 USB_PIPEnCTR_1_5_PID_SHIFT
,
956 USB_PIPEnCTR_1_5_PID
);
959 case USB_FUNCTION_PIPE5
:
960 pid
= RZA_IO_RegRead_16(&USB200
.PIPE5CTR
,
961 USB_PIPEnCTR_1_5_PID_SHIFT
,
962 USB_PIPEnCTR_1_5_PID
);
965 case USB_FUNCTION_PIPE6
:
966 pid
= RZA_IO_RegRead_16(&USB200
.PIPE6CTR
,
967 USB_PIPEnCTR_6_8_PID_SHIFT
,
968 USB_PIPEnCTR_6_8_PID
);
971 case USB_FUNCTION_PIPE7
:
972 pid
= RZA_IO_RegRead_16(&USB200
.PIPE7CTR
,
973 USB_PIPEnCTR_6_8_PID_SHIFT
,
974 USB_PIPEnCTR_6_8_PID
);
977 case USB_FUNCTION_PIPE8
:
978 pid
= RZA_IO_RegRead_16(&USB200
.PIPE8CTR
,
979 USB_PIPEnCTR_6_8_PID_SHIFT
,
980 USB_PIPEnCTR_6_8_PID
);
983 case USB_FUNCTION_PIPE9
:
984 pid
= RZA_IO_RegRead_16(&USB200
.PIPE9CTR
,
985 USB_PIPEnCTR_9_PID_SHIFT
,
989 case USB_FUNCTION_PIPEA
:
990 pid
= RZA_IO_RegRead_16(&USB200
.PIPEACTR
,
991 USB_PIPEnCTR_A_F_PID_SHIFT
,
992 USB_PIPEnCTR_A_F_PID
);
995 case USB_FUNCTION_PIPEB
:
996 pid
= RZA_IO_RegRead_16(&USB200
.PIPEBCTR
,
997 USB_PIPEnCTR_A_F_PID_SHIFT
,
998 USB_PIPEnCTR_A_F_PID
);
1001 case USB_FUNCTION_PIPEC
:
1002 pid
= RZA_IO_RegRead_16(&USB200
.PIPECCTR
,
1003 USB_PIPEnCTR_A_F_PID_SHIFT
,
1004 USB_PIPEnCTR_A_F_PID
);
1007 case USB_FUNCTION_PIPED
:
1008 pid
= RZA_IO_RegRead_16(&USB200
.PIPEDCTR
,
1009 USB_PIPEnCTR_A_F_PID_SHIFT
,
1010 USB_PIPEnCTR_A_F_PID
);
1013 case USB_FUNCTION_PIPEE
:
1014 pid
= RZA_IO_RegRead_16(&USB200
.PIPEECTR
,
1015 USB_PIPEnCTR_A_F_PID_SHIFT
,
1016 USB_PIPEnCTR_A_F_PID
);
1019 case USB_FUNCTION_PIPEF
:
1020 pid
= RZA_IO_RegRead_16(&USB200
.PIPEFCTR
,
1021 USB_PIPEnCTR_A_F_PID_SHIFT
,
1022 USB_PIPEnCTR_A_F_PID
);
1033 /*******************************************************************************
1034 * Function Name: usb0_function_set_csclr
1035 * Description : CSPLIT status clear setting of sprit transaction in specified
1036 * : pipe is performed.
1037 * : When SQSET bit or SQCLR bit, and SQSET bit or SQCLR bit
1038 * : in DCPCTR register are continuously changed (when the sequence
1039 * : toggle bit of data PID is continuously changed over two or more pipes),
1040 * : the access cycle with 120 ns and more than 5 cycle bus clock is necessary.
1041 * : Do not set both SQCLR bit and SQSET bit to 1 at the same time.
1042 * : In addition, both bits should be operated after PID is set to NAK.
1043 * : However, when it is set to the isochronous transfer as the transfer type
1044 * : (TYPE=11), writing in SQSET bit is disabled.
1045 * Arguments : uint16_t pipe ; Pipe number
1046 * Return Value : none
1047 *******************************************************************************/
1048 void usb0_function_set_csclr (uint16_t pipe
)
1052 case USB_FUNCTION_PIPE0
:
1053 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
1055 USB_DCPCTR_CSCLR_SHIFT
,
1059 case USB_FUNCTION_PIPE1
:
1060 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
1062 USB_PIPEnCTR_1_5_CSCLR_SHIFT
,
1063 USB_PIPEnCTR_1_5_CSCLR
);
1066 case USB_FUNCTION_PIPE2
:
1067 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
1069 USB_PIPEnCTR_1_5_CSCLR_SHIFT
,
1070 USB_PIPEnCTR_1_5_CSCLR
);
1073 case USB_FUNCTION_PIPE3
:
1074 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
1076 USB_PIPEnCTR_1_5_CSCLR_SHIFT
,
1077 USB_PIPEnCTR_1_5_CSCLR
);
1080 case USB_FUNCTION_PIPE4
:
1081 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
1083 USB_PIPEnCTR_1_5_CSCLR_SHIFT
,
1084 USB_PIPEnCTR_1_5_CSCLR
);
1087 case USB_FUNCTION_PIPE5
:
1088 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
1090 USB_PIPEnCTR_1_5_CSCLR_SHIFT
,
1091 USB_PIPEnCTR_1_5_CSCLR
);
1094 case USB_FUNCTION_PIPE6
:
1095 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
1097 USB_PIPEnCTR_6_8_CSCLR_SHIFT
,
1098 USB_PIPEnCTR_6_8_CSCLR
);
1101 case USB_FUNCTION_PIPE7
:
1102 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
1104 USB_PIPEnCTR_6_8_CSCLR_SHIFT
,
1105 USB_PIPEnCTR_6_8_CSCLR
);
1108 case USB_FUNCTION_PIPE8
:
1109 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
1111 USB_PIPEnCTR_6_8_CSCLR_SHIFT
,
1112 USB_PIPEnCTR_6_8_CSCLR
);
1115 case USB_FUNCTION_PIPE9
:
1116 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
1118 USB_PIPEnCTR_9_CSCLR_SHIFT
,
1119 USB_PIPEnCTR_9_CSCLR
);
1123 /* PIPEA-F have not CSCLR */
1128 /*******************************************************************************
1129 * Function Name: usb0_function_set_sqclr
1130 * Description : Sets the sequence bit of the pipe specified by the argument to
1132 * Arguments : uint16_t pipe ; Pipe Number
1133 * Return Value : none
1134 *******************************************************************************/
1135 void usb0_function_set_sqclr (uint16_t pipe
)
1139 case USB_FUNCTION_PIPE0
:
1140 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
1142 USB_DCPCTR_SQCLR_SHIFT
,
1146 case USB_FUNCTION_PIPE1
:
1147 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
1149 USB_PIPEnCTR_1_5_SQCLR_SHIFT
,
1150 USB_PIPEnCTR_1_5_SQCLR
);
1153 case USB_FUNCTION_PIPE2
:
1154 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
1156 USB_PIPEnCTR_1_5_SQCLR_SHIFT
,
1157 USB_PIPEnCTR_1_5_SQCLR
);
1160 case USB_FUNCTION_PIPE3
:
1161 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
1163 USB_PIPEnCTR_1_5_SQCLR_SHIFT
,
1164 USB_PIPEnCTR_1_5_SQCLR
);
1167 case USB_FUNCTION_PIPE4
:
1168 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
1170 USB_PIPEnCTR_1_5_SQCLR_SHIFT
,
1171 USB_PIPEnCTR_1_5_SQCLR
);
1174 case USB_FUNCTION_PIPE5
:
1175 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
1177 USB_PIPEnCTR_1_5_SQCLR_SHIFT
,
1178 USB_PIPEnCTR_1_5_SQCLR
);
1181 case USB_FUNCTION_PIPE6
:
1182 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
1184 USB_PIPEnCTR_6_8_SQCLR_SHIFT
,
1185 USB_PIPEnCTR_6_8_SQCLR
);
1188 case USB_FUNCTION_PIPE7
:
1189 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
1191 USB_PIPEnCTR_6_8_SQCLR_SHIFT
,
1192 USB_PIPEnCTR_6_8_SQCLR
);
1195 case USB_FUNCTION_PIPE8
:
1196 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
1198 USB_PIPEnCTR_6_8_SQCLR_SHIFT
,
1199 USB_PIPEnCTR_6_8_SQCLR
);
1202 case USB_FUNCTION_PIPE9
:
1203 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
1205 USB_PIPEnCTR_9_SQCLR_SHIFT
,
1206 USB_PIPEnCTR_9_SQCLR
);
1209 case USB_FUNCTION_PIPEA
:
1210 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
1212 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1213 USB_PIPEnCTR_A_F_SQCLR
);
1216 case USB_FUNCTION_PIPEB
:
1217 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
1219 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1220 USB_PIPEnCTR_A_F_SQCLR
);
1223 case USB_FUNCTION_PIPEC
:
1224 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
1226 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1227 USB_PIPEnCTR_A_F_SQCLR
);
1230 case USB_FUNCTION_PIPED
:
1231 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
1233 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1234 USB_PIPEnCTR_A_F_SQCLR
);
1237 case USB_FUNCTION_PIPEE
:
1238 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
1240 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1241 USB_PIPEnCTR_A_F_SQCLR
);
1244 case USB_FUNCTION_PIPEF
:
1245 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
1247 USB_PIPEnCTR_A_F_SQCLR_SHIFT
,
1248 USB_PIPEnCTR_A_F_SQCLR
);
1256 /*******************************************************************************
1257 * Function Name: usb0_function_set_sqset
1258 * Description : Sets the sequence bit of the pipe specified by the argument to
1260 * Arguments : uint16_t pipe ; Pipe number
1261 * Return Value : none
1262 *******************************************************************************/
1263 void usb0_function_set_sqset (uint16_t pipe
)
1267 case USB_FUNCTION_PIPE0
:
1268 RZA_IO_RegWrite_16(&USB200
.DCPCTR
,
1270 USB_DCPCTR_SQSET_SHIFT
,
1274 case USB_FUNCTION_PIPE1
:
1275 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
1277 USB_PIPEnCTR_1_5_SQSET_SHIFT
,
1278 USB_PIPEnCTR_1_5_SQSET
);
1281 case USB_FUNCTION_PIPE2
:
1282 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
1284 USB_PIPEnCTR_1_5_SQSET_SHIFT
,
1285 USB_PIPEnCTR_1_5_SQSET
);
1288 case USB_FUNCTION_PIPE3
:
1289 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
1291 USB_PIPEnCTR_1_5_SQSET_SHIFT
,
1292 USB_PIPEnCTR_1_5_SQSET
);
1295 case USB_FUNCTION_PIPE4
:
1296 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
1298 USB_PIPEnCTR_1_5_SQSET_SHIFT
,
1299 USB_PIPEnCTR_1_5_SQSET
);
1302 case USB_FUNCTION_PIPE5
:
1303 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
1305 USB_PIPEnCTR_1_5_SQSET_SHIFT
,
1306 USB_PIPEnCTR_1_5_SQSET
);
1309 case USB_FUNCTION_PIPE6
:
1310 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
1312 USB_PIPEnCTR_6_8_SQSET_SHIFT
,
1313 USB_PIPEnCTR_6_8_SQSET
);
1316 case USB_FUNCTION_PIPE7
:
1317 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
1319 USB_PIPEnCTR_6_8_SQSET_SHIFT
,
1320 USB_PIPEnCTR_6_8_SQSET
);
1323 case USB_FUNCTION_PIPE8
:
1324 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
1326 USB_PIPEnCTR_6_8_SQSET_SHIFT
,
1327 USB_PIPEnCTR_6_8_SQSET
);
1330 case USB_FUNCTION_PIPE9
:
1331 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
1333 USB_PIPEnCTR_9_SQSET_SHIFT
,
1334 USB_PIPEnCTR_9_SQSET
);
1337 case USB_FUNCTION_PIPEA
:
1338 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
1340 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1341 USB_PIPEnCTR_A_F_SQSET
);
1344 case USB_FUNCTION_PIPEB
:
1345 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
1347 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1348 USB_PIPEnCTR_A_F_SQSET
);
1351 case USB_FUNCTION_PIPEC
:
1352 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
1354 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1355 USB_PIPEnCTR_A_F_SQSET
);
1358 case USB_FUNCTION_PIPED
:
1359 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
1361 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1362 USB_PIPEnCTR_A_F_SQSET
);
1365 case USB_FUNCTION_PIPEE
:
1366 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
1368 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1369 USB_PIPEnCTR_A_F_SQSET
);
1372 case USB_FUNCTION_PIPEF
:
1373 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
1375 USB_PIPEnCTR_A_F_SQSET_SHIFT
,
1376 USB_PIPEnCTR_A_F_SQSET
);
1384 /*******************************************************************************
1385 * Function Name: usb0_function_get_sqmon
1386 * Description : Toggle bit of specified pipe is obtained
1387 * Arguments : uint16_t pipe ; Pipe number
1388 * Return Value : sqmon
1389 *******************************************************************************/
1390 uint16_t usb0_function_get_sqmon (uint16_t pipe
)
1396 case USB_FUNCTION_PIPE0
:
1397 sqmon
= RZA_IO_RegRead_16(&USB200
.DCPCTR
,
1398 USB_DCPCTR_SQMON_SHIFT
,
1402 case USB_FUNCTION_PIPE1
:
1403 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE1CTR
,
1404 USB_PIPEnCTR_1_5_SQMON_SHIFT
,
1405 USB_PIPEnCTR_1_5_SQMON
);
1408 case USB_FUNCTION_PIPE2
:
1409 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE2CTR
,
1410 USB_PIPEnCTR_1_5_SQMON_SHIFT
,
1411 USB_PIPEnCTR_1_5_SQMON
);
1414 case USB_FUNCTION_PIPE3
:
1415 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE3CTR
,
1416 USB_PIPEnCTR_1_5_SQMON_SHIFT
,
1417 USB_PIPEnCTR_1_5_SQMON
);
1420 case USB_FUNCTION_PIPE4
:
1421 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE4CTR
,
1422 USB_PIPEnCTR_1_5_SQMON_SHIFT
,
1423 USB_PIPEnCTR_1_5_SQMON
);
1426 case USB_FUNCTION_PIPE5
:
1427 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE5CTR
,
1428 USB_PIPEnCTR_1_5_SQMON_SHIFT
,
1429 USB_PIPEnCTR_1_5_SQMON
);
1432 case USB_FUNCTION_PIPE6
:
1433 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE6CTR
,
1434 USB_PIPEnCTR_6_8_SQMON_SHIFT
,
1435 USB_PIPEnCTR_6_8_SQMON
);
1438 case USB_FUNCTION_PIPE7
:
1439 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE7CTR
,
1440 USB_PIPEnCTR_6_8_SQMON_SHIFT
,
1441 USB_PIPEnCTR_6_8_SQMON
);
1444 case USB_FUNCTION_PIPE8
:
1445 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE8CTR
,
1446 USB_PIPEnCTR_6_8_SQMON_SHIFT
,
1447 USB_PIPEnCTR_6_8_SQMON
);
1450 case USB_FUNCTION_PIPE9
:
1451 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPE9CTR
,
1452 USB_PIPEnCTR_9_SQMON_SHIFT
,
1453 USB_PIPEnCTR_9_SQMON
);
1456 case USB_FUNCTION_PIPEA
:
1457 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPEACTR
,
1458 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1459 USB_PIPEnCTR_A_F_SQMON
);
1462 case USB_FUNCTION_PIPEB
:
1463 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPEBCTR
,
1464 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1465 USB_PIPEnCTR_A_F_SQMON
);
1468 case USB_FUNCTION_PIPEC
:
1469 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPECCTR
,
1470 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1471 USB_PIPEnCTR_A_F_SQMON
);
1474 case USB_FUNCTION_PIPED
:
1475 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPEDCTR
,
1476 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1477 USB_PIPEnCTR_A_F_SQMON
);
1480 case USB_FUNCTION_PIPEE
:
1481 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPEECTR
,
1482 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1483 USB_PIPEnCTR_A_F_SQMON
);
1486 case USB_FUNCTION_PIPEF
:
1487 sqmon
= RZA_IO_RegRead_16(&USB200
.PIPEFCTR
,
1488 USB_PIPEnCTR_A_F_SQMON_SHIFT
,
1489 USB_PIPEnCTR_A_F_SQMON
);
1500 /*******************************************************************************
1501 * Function Name: usb0_function_aclrm
1502 * Description : The buffer of specified pipe is initialized
1503 * Arguments : uint16_t pipe : Pipe
1504 * Return Value : none
1505 *******************************************************************************/
1506 void usb0_function_aclrm (uint16_t pipe
)
1508 usb0_function_set_aclrm(pipe
);
1509 usb0_function_clr_aclrm(pipe
);
1512 /*******************************************************************************
1513 * Function Name: usb0_function_set_aclrm
1514 * Description : The auto buffer clear mode of specified pipe is enabled
1515 * Arguments : uint16_t pipe : Pipe
1516 * Return Value : none
1517 *******************************************************************************/
1518 void usb0_function_set_aclrm (uint16_t pipe
)
1522 case USB_FUNCTION_PIPE0
:
1525 case USB_FUNCTION_PIPE1
:
1526 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
1528 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1529 USB_PIPEnCTR_1_5_ACLRM
);
1532 case USB_FUNCTION_PIPE2
:
1533 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
1535 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1536 USB_PIPEnCTR_1_5_ACLRM
);
1539 case USB_FUNCTION_PIPE3
:
1540 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
1542 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1543 USB_PIPEnCTR_1_5_ACLRM
);
1546 case USB_FUNCTION_PIPE4
:
1547 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
1549 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1550 USB_PIPEnCTR_1_5_ACLRM
);
1553 case USB_FUNCTION_PIPE5
:
1554 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
1556 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1557 USB_PIPEnCTR_1_5_ACLRM
);
1560 case USB_FUNCTION_PIPE6
:
1561 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
1563 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1564 USB_PIPEnCTR_6_8_ACLRM
);
1567 case USB_FUNCTION_PIPE7
:
1568 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
1570 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1571 USB_PIPEnCTR_6_8_ACLRM
);
1574 case USB_FUNCTION_PIPE8
:
1575 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
1577 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1578 USB_PIPEnCTR_6_8_ACLRM
);
1581 case USB_FUNCTION_PIPE9
:
1582 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
1584 USB_PIPEnCTR_9_ACLRM_SHIFT
,
1585 USB_PIPEnCTR_9_ACLRM
);
1588 case USB_FUNCTION_PIPEA
:
1589 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
1591 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1592 USB_PIPEnCTR_A_F_ACLRM
);
1595 case USB_FUNCTION_PIPEB
:
1596 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
1598 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1599 USB_PIPEnCTR_A_F_ACLRM
);
1602 case USB_FUNCTION_PIPEC
:
1603 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
1605 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1606 USB_PIPEnCTR_A_F_ACLRM
);
1609 case USB_FUNCTION_PIPED
:
1610 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
1612 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1613 USB_PIPEnCTR_A_F_ACLRM
);
1616 case USB_FUNCTION_PIPEE
:
1617 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
1619 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1620 USB_PIPEnCTR_A_F_ACLRM
);
1623 case USB_FUNCTION_PIPEF
:
1624 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
1626 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1627 USB_PIPEnCTR_A_F_ACLRM
);
1635 /*******************************************************************************
1636 * Function Name: usb0_function_clr_aclrm
1637 * Description : The auto buffer clear mode of specified pipe is enabled
1638 * Arguments : uint16_t pipe : Pipe
1639 * Return Value : none
1640 *******************************************************************************/
1641 void usb0_function_clr_aclrm (uint16_t pipe
)
1645 case USB_FUNCTION_PIPE0
:
1648 case USB_FUNCTION_PIPE1
:
1649 RZA_IO_RegWrite_16(&USB200
.PIPE1CTR
,
1651 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1652 USB_PIPEnCTR_1_5_ACLRM
);
1655 case USB_FUNCTION_PIPE2
:
1656 RZA_IO_RegWrite_16(&USB200
.PIPE2CTR
,
1658 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1659 USB_PIPEnCTR_1_5_ACLRM
);
1662 case USB_FUNCTION_PIPE3
:
1663 RZA_IO_RegWrite_16(&USB200
.PIPE3CTR
,
1665 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1666 USB_PIPEnCTR_1_5_ACLRM
);
1669 case USB_FUNCTION_PIPE4
:
1670 RZA_IO_RegWrite_16(&USB200
.PIPE4CTR
,
1672 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1673 USB_PIPEnCTR_1_5_ACLRM
);
1676 case USB_FUNCTION_PIPE5
:
1677 RZA_IO_RegWrite_16(&USB200
.PIPE5CTR
,
1679 USB_PIPEnCTR_1_5_ACLRM_SHIFT
,
1680 USB_PIPEnCTR_1_5_ACLRM
);
1683 case USB_FUNCTION_PIPE6
:
1684 RZA_IO_RegWrite_16(&USB200
.PIPE6CTR
,
1686 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1687 USB_PIPEnCTR_6_8_ACLRM
);
1690 case USB_FUNCTION_PIPE7
:
1691 RZA_IO_RegWrite_16(&USB200
.PIPE7CTR
,
1693 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1694 USB_PIPEnCTR_6_8_ACLRM
);
1697 case USB_FUNCTION_PIPE8
:
1698 RZA_IO_RegWrite_16(&USB200
.PIPE8CTR
,
1700 USB_PIPEnCTR_6_8_ACLRM_SHIFT
,
1701 USB_PIPEnCTR_6_8_ACLRM
);
1704 case USB_FUNCTION_PIPE9
:
1705 RZA_IO_RegWrite_16(&USB200
.PIPE9CTR
,
1707 USB_PIPEnCTR_9_ACLRM_SHIFT
,
1708 USB_PIPEnCTR_9_ACLRM
);
1711 case USB_FUNCTION_PIPEA
:
1712 RZA_IO_RegWrite_16(&USB200
.PIPEACTR
,
1714 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1715 USB_PIPEnCTR_A_F_ACLRM
);
1718 case USB_FUNCTION_PIPEB
:
1719 RZA_IO_RegWrite_16(&USB200
.PIPEBCTR
,
1721 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1722 USB_PIPEnCTR_A_F_ACLRM
);
1725 case USB_FUNCTION_PIPEC
:
1726 RZA_IO_RegWrite_16(&USB200
.PIPECCTR
,
1728 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1729 USB_PIPEnCTR_A_F_ACLRM
);
1732 case USB_FUNCTION_PIPED
:
1733 RZA_IO_RegWrite_16(&USB200
.PIPEDCTR
,
1735 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1736 USB_PIPEnCTR_A_F_ACLRM
);
1739 case USB_FUNCTION_PIPEE
:
1740 RZA_IO_RegWrite_16(&USB200
.PIPEECTR
,
1742 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1743 USB_PIPEnCTR_A_F_ACLRM
);
1746 case USB_FUNCTION_PIPEF
:
1747 RZA_IO_RegWrite_16(&USB200
.PIPEFCTR
,
1749 USB_PIPEnCTR_A_F_ACLRM_SHIFT
,
1750 USB_PIPEnCTR_A_F_ACLRM
);
1758 /*******************************************************************************
1759 * Function Name: usb0_function_get_inbuf
1760 * Description : Returns INBUFM of the pipe specified by the argument.
1761 * Arguments : uint16_t pipe ; Pipe Number
1762 * Return Value : inbuf
1763 *******************************************************************************/
1764 uint16_t usb0_function_get_inbuf (uint16_t pipe
)
1770 case USB_FUNCTION_PIPE0
:
1774 case USB_FUNCTION_PIPE1
:
1775 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE1CTR
,
1776 USB_PIPEnCTR_1_5_INBUFM_SHIFT
,
1777 USB_PIPEnCTR_1_5_INBUFM
);
1780 case USB_FUNCTION_PIPE2
:
1781 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE2CTR
,
1782 USB_PIPEnCTR_1_5_INBUFM_SHIFT
,
1783 USB_PIPEnCTR_1_5_INBUFM
);
1786 case USB_FUNCTION_PIPE3
:
1787 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE3CTR
,
1788 USB_PIPEnCTR_1_5_INBUFM_SHIFT
,
1789 USB_PIPEnCTR_1_5_INBUFM
);
1792 case USB_FUNCTION_PIPE4
:
1793 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE4CTR
,
1794 USB_PIPEnCTR_1_5_INBUFM_SHIFT
,
1795 USB_PIPEnCTR_1_5_INBUFM
);
1798 case USB_FUNCTION_PIPE5
:
1799 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE5CTR
,
1800 USB_PIPEnCTR_1_5_INBUFM_SHIFT
,
1801 USB_PIPEnCTR_1_5_INBUFM
);
1804 case USB_FUNCTION_PIPE6
:
1808 case USB_FUNCTION_PIPE7
:
1812 case USB_FUNCTION_PIPE8
:
1816 case USB_FUNCTION_PIPE9
:
1817 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPE9CTR
,
1818 USB_PIPEnCTR_9_INBUFM_SHIFT
,
1819 USB_PIPEnCTR_9_INBUFM
);
1822 case USB_FUNCTION_PIPEA
:
1823 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPEACTR
,
1824 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1825 USB_PIPEnCTR_A_F_INBUFM
);
1828 case USB_FUNCTION_PIPEB
:
1829 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPEBCTR
,
1830 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1831 USB_PIPEnCTR_A_F_INBUFM
);
1834 case USB_FUNCTION_PIPEC
:
1835 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPECCTR
,
1836 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1837 USB_PIPEnCTR_A_F_INBUFM
);
1840 case USB_FUNCTION_PIPED
:
1841 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPEDCTR
,
1842 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1843 USB_PIPEnCTR_A_F_INBUFM
);
1846 case USB_FUNCTION_PIPEE
:
1847 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPEECTR
,
1848 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1849 USB_PIPEnCTR_A_F_INBUFM
);
1852 case USB_FUNCTION_PIPEF
:
1853 inbuf
= RZA_IO_RegRead_16(&USB200
.PIPEFCTR
,
1854 USB_PIPEnCTR_A_F_INBUFM_SHIFT
,
1855 USB_PIPEnCTR_A_F_INBUFM
);
1866 /*******************************************************************************
1867 * Function Name: usb0_function_setting_interrupt
1868 * Description : Sets the USB module interrupt level.
1869 * Arguments : uint8_t level ;interrupt level
1870 * Return Value : none
1871 *******************************************************************************/
1873 void usb0_function_setting_interrupt (uint8_t level
)
1875 uint16_t d0fifo_dmaintid
;
1876 uint16_t d1fifo_dmaintid
;
1878 R_INTC_RegistIntFunc(INTC_ID_USBI0
, usb0_function_interrupt
);
1879 R_INTC_SetPriority(INTC_ID_USBI0
, level
);
1880 R_INTC_Enable(INTC_ID_USBI0
);
1882 d0fifo_dmaintid
= Userdef_USB_usb0_function_d0fifo_dmaintid();
1884 if (d0fifo_dmaintid
!= 0xFFFF)
1886 R_INTC_RegistIntFunc(d0fifo_dmaintid
, usb0_function_dma_interrupt_d0fifo
);
1887 R_INTC_SetPriority(d0fifo_dmaintid
, level
);
1888 R_INTC_Enable(d0fifo_dmaintid
);
1891 d1fifo_dmaintid
= Userdef_USB_usb0_function_d1fifo_dmaintid();
1893 if (d1fifo_dmaintid
!= 0xFFFF)
1895 R_INTC_RegistIntFunc(d1fifo_dmaintid
, usb0_function_dma_interrupt_d1fifo
);
1896 R_INTC_SetPriority(d1fifo_dmaintid
, level
);
1897 R_INTC_Enable(d1fifo_dmaintid
);
1902 /*******************************************************************************
1903 * Function Name: usb0_function_reset_module
1904 * Description : Initializes the USB module.
1905 * : Enables providing clock to the USB module.
1906 * : Sets USB bus wait register.
1907 * Arguments : uint16_t clockmode ; 48MHz ; USBFCLOCK_X1_48MHZ
1908 * : ; 12MHz ; USBFCLOCK_EXTAL_12MHZ
1909 * Return Value : none
1910 *******************************************************************************/
1911 void usb0_function_reset_module (uint16_t clockmode
)
1913 /* UPLLE bit is only USB0 */
1914 if (RZA_IO_RegRead_16(&USB200
.SYSCFG0
,
1915 USB_SYSCFG_UPLLE_SHIFT
,
1916 USB_SYSCFG_UPLLE
) == 1)
1918 if ((USB200
.SYSCFG0
& USB_FUNCTION_BITUCKSEL
) != clockmode
)
1920 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1922 USB_SUSPMODE_SUSPM_SHIFT
,
1923 USB_SUSPMODE_SUSPM
);
1925 USB200
.SYSCFG0
= (USB_FUNCTION_BITUPLLE
| clockmode
);
1926 Userdef_USB_usb0_function_delay_xms(1);
1927 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1929 USB_SUSPMODE_SUSPM_SHIFT
,
1930 USB_SUSPMODE_SUSPM
);
1934 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1936 USB_SUSPMODE_SUSPM_SHIFT
,
1937 USB_SUSPMODE_SUSPM
);
1938 Userdef_USB_usb0_function_delay_xms(1);
1939 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1941 USB_SUSPMODE_SUSPM_SHIFT
,
1942 USB_SUSPMODE_SUSPM
);
1947 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1949 USB_SUSPMODE_SUSPM_SHIFT
,
1950 USB_SUSPMODE_SUSPM
);
1952 USB200
.SYSCFG0
= (USB_FUNCTION_BITUPLLE
| clockmode
);
1953 Userdef_USB_usb0_function_delay_xms(1);
1954 RZA_IO_RegWrite_16(&USB200
.SUSPMODE
,
1956 USB_SUSPMODE_SUSPM_SHIFT
,
1957 USB_SUSPMODE_SUSPM
);
1960 USB200
.BUSWAIT
= (uint16_t)(USB_FUNCTION_BUSWAIT_05
& USB_FUNCTION_BITBWAIT
);
1963 /*******************************************************************************
1964 * Function Name: usb0_function_get_buf_size
1965 * Description : Obtains pipe buffer size specified by the argument and
1966 * : maximum packet size of the USB device in use.
1967 * : When USB_FUNCTION_PIPE0 is specified by the argument, obtains the maximum
1968 * : packet size of the USB device using the corresponding pipe.
1969 * : For the case that USB_FUNCTION_PIPE0 is not assigned by the argument, when the
1970 * : corresponding pipe is in continuous transfer mode,
1971 * : obtains the buffer size allocated in the corresponcing pipe,
1972 * : when incontinuous transfer, obtains maximum packet size.
1973 * Arguments : uint16_t pipe ; Pipe Number
1974 * Return Value : Maximum packet size or buffer size
1975 *******************************************************************************/
1976 uint16_t usb0_function_get_buf_size (uint16_t pipe
)
1981 if (pipe
== USB_FUNCTION_PIPE0
)
1983 size
= RZA_IO_RegRead_16(&USB200
.DCPMAXP
,
1984 USB_DCPMAXP_MXPS_SHIFT
,
1989 if (RZA_IO_RegRead_16(&g_usb0_function_pipecfg
[pipe
], USB_PIPECFG_CNTMD_SHIFT
, USB_PIPECFG_CNTMD
) == 1)
1991 bufsize
= RZA_IO_RegRead_16(&g_usb0_function_pipebuf
[pipe
], USB_PIPEBUF_BUFSIZE_SHIFT
, USB_PIPEBUF_BUFSIZE
);
1992 size
= (uint16_t)((bufsize
+ 1) * USB_FUNCTION_PIPExBUF
);
1996 size
= RZA_IO_RegRead_16(&g_usb0_function_pipemaxp
[pipe
], USB_PIPEMAXP_MXPS_SHIFT
, USB_PIPEMAXP_MXPS
);
2002 /*******************************************************************************
2003 * Function Name: usb0_function_get_mxps
2004 * Description : Obtains maximum packet size of the USB device using the pipe
2005 * : specified by the argument.
2006 * Arguments : uint16_t pipe ; Pipe Number
2007 * Return Value : Max Packet Size
2008 *******************************************************************************/
2009 uint16_t usb0_function_get_mxps (uint16_t pipe
)
2013 if (pipe
== USB_FUNCTION_PIPE0
)
2015 size
= RZA_IO_RegRead_16(&USB200
.DCPMAXP
,
2016 USB_DCPMAXP_MXPS_SHIFT
,
2021 size
= RZA_IO_RegRead_16(&g_usb0_function_pipemaxp
[pipe
], USB_PIPEMAXP_MXPS_SHIFT
, USB_PIPEMAXP_MXPS
);