This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3358: UVC based camera image capture issue

Part Number: AM3358

Hi,

I am trying to capture MJPEG 3264X2448 frame on BeableBoneBlack AM3358 processor based board. Currently using latest TI SDK.

I have capture usbmon logs for good and bad case. Need help to understand where is the issue.

Good log is for case MJPEG 640x480 frame and bad case for MJPEG 3264x2448 frame.

Camera is connected over USB. When MJPEG frame is captured for 3264X2448, fame/jpeg image capture is incomplete. When such image(capturing MJPEG fame and save to file) is decoded using any image view application, it shows black/grey strip at bottom.

Best Regards,

Vikas

db0db000 3460586199 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
db0db000 3460586883 C Ci:1:001:0 0 4 = 07051200
db0db000 3460587139 S Co:1:001:0 s 23 01 0011 0001 0000 0
db0db000 3460587367 C Co:1:001:0 0 0
db0db000 3460587561 S Co:1:001:0 s 23 01 0014 0001 0000 0
db0db000 3460587775 C Co:1:001:0 0 0
db6bc480 3460689921 S Ii:1:001:1 -115:2048 4 <
db0db000 3460690469 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
db0db000 3460690552 C Ci:1:001:0 0 4 = 07050000
db0db000 3460690936 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
db0db000 3460691150 C Ci:1:001:0 0 4 = 07050000
db0db000 3460691344 S Co:1:001:0 s 23 01 0002 0001 0000 0
db0db000 3460691567 C Co:1:001:0 0 0
db6bc480 3460699927 C Ii:1:001:1 0:2048 1 = 02
db6bc480 3460699992 S Ii:1:001:1 -115:2048 4 <
db6bc480 3460729986 C Ii:1:001:1 0:2048 1 = 02
db6bc480 3460730048 S Ii:1:001:1 -115:2048 4 <
db0db000 3460739917 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
db0db000 3460740023 C Ci:1:001:0 0 4 = 03050400
db0db000 3460759911 S Co:1:001:0 s 23 01 0012 0001 0000 0
db0db000 3460760013 C Co:1:001:0 0 0
db0db000 3460760545 S Ci:1:002:0 s 80 00 0000 0000 0002 2 <
db0db000 3460760948 C Ci:1:002:0 0 2 = 0200
db0db000 3460761026 S Co:1:002:0 s 00 01 0001 0000 0000 0
db0db000 3460761118 C Co:1:002:0 -32 0
db0db000 3460761541 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
db0db000 3460761590 C Ci:1:001:0 0 4 = 03050000
db518e80 3460761788 S Ii:1:002:3 -115:32 16 <
db0db780 3460762476 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00000000 00000000 0000
db0db780 3460770434 C Co:1:002:0 0 26 >
db3af280 3460776674 S Ci:1:002:0 s a1 82 0100 0001 001a 26 <
db3af280 3460777026 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db3af280 3460777514 S Ci:1:002:0 s a1 83 0100 0001 001a 26 <
db3af280 3460777829 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db3af280 3460777904 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00000000 00000000 0000
db3af280 3460785862 C Co:1:002:0 0 26 >
db700900 3460785984 S Ci:1:002:0 s a1 81 0100 0001 001a 26 <
db700900 3460786311 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db700900 3460787187 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db700900 3460795316 C Co:1:002:0 0 26 >
db4b7080 3460795529 S Ci:1:002:0 s a1 82 0100 0001 001a 26 <
db4b7080 3460795893 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db4b7080 3460795960 S Ci:1:002:0 s a1 83 0100 0001 001a 26 <
db4b7080 3460796241 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db4b7080 3460796298 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db4b7080 3460804299 C Co:1:002:0 0 26 >
db4b7080 3460804506 S Ci:1:002:0 s a1 81 0100 0001 001a 26 <
db4b7080 3460804848 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db4b7280 3460838105 S Co:1:002:0 s 21 01 0200 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db4b7280 3460850792 C Co:1:002:0 0 26 >
db641b80 3460856773 S Bi:1:002:2 -115 16384 <
db641a80 3460857035 S Bi:1:002:2 -115 16384 <
db641d00 3460857223 S Bi:1:002:2 -115 16384 <
db35ba00 3460857404 S Bi:1:002:2 -115 16384 <
db35b800 3460857582 S Bi:1:002:2 -115 16384 <
db35b780 3460857759 S Bi:1:002:2 -115 16384 <
db35bc80 3460857935 S Bi:1:002:2 -115 16384 <
db35b900 3460858113 S Bi:1:002:2 -115 16384 <
db35b200 3460858288 S Bi:1:002:2 -115 16384 <
db35b580 3460858464 S Bi:1:002:2 -115 16384 <
db35bb00 3460858640 S Bi:1:002:2 -115 16384 <
db35bd80 3460858817 S Bi:1:002:2 -115 16384 <
db35be00 3460858994 S Bi:1:002:2 -115 16384 <
db35be80 3460859171 S Bi:1:002:2 -115 16384 <
db35b180 3460859349 S Bi:1:002:2 -115 16384 <
da17a800 3460859525 S Bi:1:002:2 -115 16384 <
da17a880 3460865838 S Bi:1:002:2 -115 16384 <
da17a080 3460865866 S Bi:1:002:2 -115 16384 <
da17a200 3460865871 S Bi:1:002:2 -115 16384 <
db6bc580 3460865876 S Bi:1:002:2 -115 16384 <
db42c400 34608db42ce00 3460865886 S Bi:1:002:2 -115 16384 <
db42ca80 3460865890 S Bi:1:002:2 -115 16384 <
db42c780 3460865895 S Bi:1:002:2 -115 16384 <
db6c9f80 3460865899 S Bi:1:002:2 -115 16384 <
db423f00 3460865904 S Bi:1:002:2 -115 16384 <
dc7e2580 3460865908 S Bi:1:002:2 -115 16384 <
dc7e2500 3460865913 S Bi:1:002:2 -115 16384 <
dc0f1b80 3460865918 S Bi:1:002:2 -115 16384 <
dc0f1b00 3460865923 S Bi:1:002:2 -115 16384 <
dc029880 3460865927 S Bi:1:002:2 -115 16384 <
dc029800 3460865932 S Bi:1:002:2 -115 16384 <
db6c2780 3460865937 S Bi:1:002:2 -115 16384 <
db6c2e80 3460865942 S Bi:1:002:2 -115 16384 <
db6c2800 3460865947 S Bi:1:002:2 -115 16384 <
db5e2a80 3460865951 S Bi:1:002:2 -115 16384 <
db5e2780 3460865956 S Bi:1:002:2 -115 16384 <
db5e2c00 3460865961 S Bi:1:002:2 -115 16384 <
da108e80 3460865965 S Bi:1:002:2 -115 16384 <
da108700 3460865970 S Bi:1:002:2 -115 16384 <
da108c80 3460865975 S Bi:1:002:2 -115 16384 <
db485d80 3460865980 S Bi:1:002:2 -115 16384 <
db160380 3460866011 S Bi:1:002:2 -115 16384 <
db0db780 3460866016 S Bi:1:002:2 -115 16384 <
db0dbe80 3460866021 S Bi:1:002:2 -115 16384 <
db3af880 3460866026 S Bi:1:002:2 -115 16384 <
db3af280 3460866031 S Bi:1:002:2 -115 16384 <
db3afe80 3460866035 S Bi:1:002:2 -115 16384 <
db700900 3460866041 S Bi:1:002:2 -115 16384 <
db700280 3460866045 S Bi:1:002:2 -115 16384 <
db641b80 3461321037 C Bi:1:002:2 0 13110 = 0c8cf609 2107f671 ee090303 ffd8ffc0 00110801 e0028003 01210002 11010311
db641b80 3461321553 S Bi:1:002:2 -115 16384 <
db641a80 3461321596 C Bi:1:002:2 0 322 = 0c8f0124 ef09ff47 ef090603 399bf87d 688baf4e bdc53024 a290c28a 602d1400
db641a80 3461321744 S Bi:1:002:2 -115 16384 <
db641b80 3461327140 C Bi:1:002:2 -2 0
db641a80 3461327163 C Bi:1:002:2 -2 0
db641d00 3461327485 C Bi:1:002:2 -2 0
db35ba00 3461327803 C Bi:1:002:2 -2 0
db35b800 3461328116 C Bi:1:002:2 -2 0
db35b780 3461328427 C Bi:1:002:2 -2 0
db35bc80 3461328738 C Bi:1:002:2 -2 0
db35b900 3461329048 C Bi:1:002:2 -2 0
db35b200 3461329358 C Bi:1:002:2 -2 0
db35b580 3461329668 C Bi:1:002:2 -2 0
db35bb00 3461335476 C Bi:1:002:2 -2 0
db35bd80 3461335916 C Bi:1:002:2 -2 0
db35be00 3461338295 C Bi:1:002:2 -2 0
db35be80 3461338735 C Bi:1:002:2 -2 0
db35b180 3461339150 C Bi:1:002:2 -2 0
da17a800 3461339556 C Bi:1:002:2 -2 0
da17a880 3461342230 C Bi:1:002:2 -2 0
da17a080 3461342673 C Bi:1:002:2 -2 0
da17a200 3461343082 C Bi:1:002:2 -2 0
db6bc580 3461343490 C Bi:1:002:2 -2 0
db42c400 3461345871 C Bi:1:002:2 -2 0
db42ce00 3461346319 C Bi:1:002:2 -2 0
db42ca80 3461346732 C Bi:1:002:2 -2 0
db42c780 3461347138 C Bi:1:002:2 -2 0
db6c9f80 3461349199 C Bi:1:002:2 -2 0
db423f00 3461349634 C Bi:1:002:2 -2 0
dc7e2580 3461352108 C Bi:1:002:2 0 13138 = 0c8d0124 ef096513 f6092403 ffd8ffc0 00110801 e0028003 01210002 11010311
dc7e2580 3461352162 S Bi:1:002:2 -115 16384 <
dc7e2500 3461352215 C Bi:1:002:2 0 350 = 0c8f0124 ef09294a f6092503 1b4e4eb4 0128a290 c28a0614 5300a280 128a0028
dc7e2500 3461352230 S Bi:1:002:2 -115 16384 <
dc7e2580 3461353036 C Bi:1:002:2 -2 0
dc7e2500 3461353235 C Bi:1:002:2 -2 0
dc0f1b80 3461353737 C Bi:1:002:2 -2 0
dc0f1b00 3461354242 C Bi:1:002:2 -2 0
dc029880 3461354741 C Bi:1:002:2 -2 0
dc029800 3461355241 C Bi:1:002:2 -2 0
db6c2780 3461355741 C Bi:1:002:2 -2 0
db6c2e80 3461356242 C Bi:1:002:2 -2 0
db6c2800 3461356742 C Bi:1:002:2 -2 0
db5e2a80 3461357242 C Bi:1:002:2 -2 0
db5e2780 3461357741 C Bi:1:002:2 -2 0
db5e2c00 3461358240 C Bi:1:002:2 -2 0
da108e80 3461358739 C Bi:1:002:2 -2 0
da108700 3461359239 C Bi:1:002:2 -2 0
da108c80 3461359738 C Bi:1:002:2 -2 0
db485d80 3461360427 C Bi:1:002:2 -2 0
db160380 3461360936 C Bi:1:002:2 -2 0
db0db780 3461361439 C Bi:1:002:2 -2 0
db0dbe80 3461361941 C Bi:1:002:2 -2 0
db3af880 3461362441 C Bi:1:002:2 -2 0
db3af280 3461362940 C Bi:1:002:2 -2 0
db3afe80 3461363440 C Bi:1:002:2 -2 0
db700900 3461363938 C Bi:1:002:2 -2 0
db700280 3461364438 C Bi:1:002:2 -2 0
db4b7280 3461365253 S Co:1:002:0 s 02 01 0000 0082 0000 0
db4b7280 3461376929 C Co:1:002:0 0 0
db518e80 3461385908 C Ii:1:002:3 -2:32 0
db518e80 3463387169 S Ii:1:002:3 -115:32 16 <
db641d00db641d00 3463396439 C Co:1:002:0 0 26 >
db641d00 3463396999 S Ci:1:002:0 s a1 82 0100 0001 001a 26 <
db641d00 3463397587 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463397891 S Ci:1:002:0 s a1 83 0100 0001 001a 26 <
db641d00 3463398399 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463398692 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00000000 00000000 0000
db641d00 3463406950 C Co:1:002:0 0 26 >
db641d00 3463407540 S Ci:1:002:0 s a1 81 0100 0001 001a 26 <
db641d00 3463408724 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463410088 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463418393 C Co:1:002:0 0 26 >
db641d00 3463418959 S Ci:1:002:0 s a1 82 0100 0001 001a 26 <
db641d00 3463419517 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463421729 S Ci:1:002:0 s a1 83 0100 0001 001a 26 <
db641d00 3463422077 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463425498 S Co:1:002:0 s 21 01 0100 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463433585 C Co:1:002:0 0 26 >
db641d00 3463434165 S Ci:1:002:0 s a1 81 0100 0001 001a 26 <
db641d00 3463434530 C Ci:1:002:0 0 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463466583 S Co:1:002:0 s 21 01 0200 0001 001a 26 = 01000108 15160500 00000000 00000000 00004d62 09000091 0100
db641d00 3463475082 C Co:1:002:0 0 26 >
db641d00 3463486571 S Bi:1:002:2 -115 16384 <
db641b80 3463486993 S Bi:1:002:2 -115 16384 <
db641e00 3463487206 S Bi:1:002:2 -115 16384 <
db456000 3463487392 S Bi:1:002:2 -115 16384 <
db35b180 3463487573 S Bi:1:002:2 -115 16384 <
db35be80 3463487749 S Bi:1:002:2 -115 16384 <
db35be00 3463487926 S Bi:1:002:2 -115 16384 <
db35bd80 3463488106 S Bi:1:002:2 -115 16384 <
db35bb00 3463488284 S Bi:1:002:2 -115 16384 <
db35b580 3463488460 S Bi:1:002:2 -115 16384 <
db35b200 3463488637 S Bi:1:002:2 -115 16384 <
db35b900 3463488814 S Bi:1:002:2 -115 16384 <
db35bc80 3463488991 S Bi:1:002:2 -115 16384 <
db35b780 3463489168 S Bi:1:002:2 -115 16384 <
db35b800 3463489345 S Bi:1:002:2 -115 16384 <
db35ba00 3463489522 S Bi:1:002:2 -115 16384 <
da17a200 3463494551 S Bi:1:002:2 -115 16384 <
da17a080 3463494581 S Bi:1:002:2 -115 16384 <
da17a880 3463494587 S Bi:1:002:2 -115 16384 <
da17a800 3463494592 S Bi:1:002:2 -115 16384 <
db6bc580 3463494597 S Bi:1:002:2 -115 16384 <
db42c780 3463494601 S Bi:1:002:2 -115 16384 <
db42ca80 3463494606 S Bi:1:002:2 -115 16384 <
db42ce00 3463494611 S Bi:1:002:2 -115 16384 <
db42c400 3463494616 S Bi:1:002:2 -115 16384 <
db6c9f80 3463494620 S Bi:1:002:2 -115 16384 <
db423f00 3463494625 S Bi:1:002:2 -115 16384 <
dc7e2500 3463494630 S Bi:1:002:2 -115 16384 <
dc7e2580 3463494635 S Bi:1:002:2 -115 16384 <
dc0f1b00 3463494639 S Bi:1:002:2 -115 16384 <
dc0f1b80 3463494644 S Bi:1:002:2 -115 16384 <
dc029800 3463494649 S Bi:1:002:2 -115 16384 <
dc029880 3463494654 S Bi:1:002:2 -115 16384 <
db6c2800 3463494659 S Bi:1:002:2 -115 16384 <
db6c2e80 3463494663 S Bi:1:002:2 -115 16384 <
db6c2780 3463494668 S Bi:1:002:2 -115 16384 <
db5e2c00 3463494673 S Bi:1:002:2 -115 16384 <
db5e2780 3463494677 S Bi:1:002:2 -115 16384 <
db5e2a80 3463494682 S Bi:1:002:2 -115 16384 <
da108c80 3463494687 S Bi:1:002:2 -115 16384 <
da108700 3463494691 S Bi:1:002:2 -115 16384 <
da108e80 3463494696 S Bi:1:002:2 -115 16384 <
db485d80 3463494708 S Bi:1:002:2 -115 16384 <
db160380 3463494714 S Bi:1:002:2 -115 16384 <
db0dbb00 3463494719 S Bi:1:002:2 -115 16384 <
db0db000 3463494724 S Bi:1:002:2 -115 16384 <
db0dbe80 3463494729 S Bi:1:002:2 -115 16384 <
db0db780 3463494734 S Bi:1:002:2 -115 16384 <
db3afe80 3463494739 S Bi:1:002:2 -115 16384 <
db3af280 3463494744 S Bi:1:002:2 -115 16384 <
db641d00 3463937143 C Bi:1:002:2 0 13122 = 0db641d00 3463937808 S Bi:1:002:2 -115 16384 <
db641b80 3463937897 C Bi:1:002:2 0 334 = 0c8e0124 ef097a1b 460c3e05 50014500 2514c614 50216929 011ccdd1 7d688872
db641b80 3463938024 S Bi:1:002:2 -115 16384 <
db641d00 3463957469 C Bi:1:002:2 -2 0
db641b80 3463957766 C Bi:1:002:2 -2 0
db641e00 3463958292 C Bi:1:002:2 -2 0
db456000 3463958820 C Bi:1:002:2 -2 0
db35b180 3463959328 C Bi:1:002:2 -2 0
db35be80 3463959830 C Bi:1:002:2 -2 0
db35be00 3463960582 C Bi:1:002:2 -2 0
db35bd80 3463961095 C Bi:1:002:2 -2 0
db35bb00 3463961600 C Bi:1:002:2 -2 0
db35b580 3463962103 C Bi:1:002:2 -2 0
db35b200 3463962603 C Bi:1:002:2 -2 0
db35b900 3463963102 C Bi:1:002:2 -2 0
db35bc80 3463963602 C Bi:1:002:2 -2 0
db35b780 3463964102 C Bi:1:002:2 -2 0
db35b800 3463964601 C Bi:1:002:2 -2 0
db35ba00 3463965100 C Bi:1:002:2 -2 0
da17a200 3463965599 C Bi:1:002:2 -2 0
da17a080 3463966099 C Bi:1:002:2 -2 0
da17a880 3463966599 C Bi:1:002:2 -2 0
da17a800 3463967099 C Bi:1:002:2 -2 0
db6bc580 3463967598 C Bi:1:002:2 -2 0
db42c780 3463968098 C Bi:1:002:2 -2 0
db42ca80 3463968599 C Bi:1:002:2 -2 0
db42ce00 3463969099 C Bi:1:002:2 -2 0
db42c400 3463969603 C Bi:1:002:2 -2 0
db6c9f80 3463970457 C Bi:1:002:2 -2 0
db423f00 3463970770 C Bi:1:002:2 0 4942 = 11452372 c2980fe9 41191486 2119e280 3df34085 a09c0a06 354e4e29 d4c42d14
db423f00 3463970893 S Bi:1:002:2 -115 16384 <
dc7e2500 3463970948 C Bi:1:002:2 0 346 = 0c8f6c66 460c99ad 4d0c6005 40c28a06 145200a2 98094500 145002d2 50047337
dc7e2500 3463970971 S Bi:1:002:2 -115 16384 <
db423f00 3463971544 C Bi:1:002:2 -2 0
dc7e2500 3463971735 C Bi:1:002:2 -2 0
dc7e2580 3463972230 C Bi:1:002:2 -2 0
dc0f1b00 3463972733 C Bi:1:002:2 -2 0
dc0f1b80 3463973233 C Bi:1:002:2 -2 0
dc029800 3463973734 C Bi:1:002:2 -2 0
dc029880 3463974235 C Bi:1:002:2 -2 0
db6c2800 3463974734 C Bi:1:002:2 -2 0
db6c2e80 3463975235 C Bi:1:002:2 -2 0
db6c2780 3463975735 C Bi:1:002:2 -2 0
db5e2c00 3463976234 C Bi:1:002:2 -2 0
db5e2780 3463976734 C Bi:1:002:2 -2 0
db5e2a80 3463977234 C Bi:1:002:2 -2 0
da108c80 3463977733 C Bi:1:002:2 -2 0
da108700 3463978234 C Bi:1:002:2 -2 0
da108e80 3463978734 C Bi:1:002:2 -2 0
db485d80 3463979234 C Bi:1:002:2 -2 0
db160380 3463979734 C Bi:1:002:2 -2 0
db0dbb00 3463985094 C Bi:1:002:2 -2 0
db0db000 3463985660 C Bi:1:002:2 -2 0
db0dbe80 3463986169 C Bi:1:002:2 -2 0
db0db780 3463986673 C Bi:1:002:2 -2 0
db3afe80 3463987175 C Bi:1:002:2 -2 0
db3af280 3463987676 C Bi:1:002:2 -2 0
db641b80 3463988571 S Co:1:002:0 s 02 01 0000 0082 0000 0
db641b80 3463995012 C Co:1:002:0 0 0
db518e80 3463998774 C Ii:1:002:3 -2:32 0
db641b80 3466110051 S Co:1:001:0 s 23 03 0002 0001 0000 0
db641b80 3466113567 C Co:1:001:0 0 0
db6bc480 3466129963 C Ii:1:001:1 -2:2048 0
usbmonBad.mon.txt

  • Hi Vikas,

    How do you capture the MJPEG picture? What application do you use?

    As far as I know, not every usb webcam supports static picture capturing. In such case if you try to capture one frame of a video stream, you might run into usb throughput limitation.
    Assuming the video streaming is 30fps, and MJPEG compression ratio is 1:20, then the throughput would be

    3264 * 2448 * 2 * 30 / 20 / 1024 / 1024 = 23MB/s

    which is more than AM335x USB RX capability.
  • Hello,
    In addition to what Bin Liu warned: can you please specify which camera you use and see its properties with
    lsusb (to get camera vid:pid) then
    lsusb -v -d <vid:pid> | grep wHeight
    lsusb -v -d <vid:pid> | grep wWidth
    just to be sure the UVC cam capabilities has 3264x2448 frame as native resolution.

    Michail

  • Hi, I haven’t heard back from you, I’m assuming you were able to resolve your issue. If not, just post a reply below (or create a new thread if the thread has locked due to time-out). thanks.
  • root@am335x-evm:~# dmesg | grep "dma"
    [    3.399535] edma 49000000.edma: TI EDMA DMA engine driver
    root@am335x-evm:~# dmesg | grep "musb"
    [   68.058440] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   68.058509] musb-hdrc: MHDRC RTL version 2.0 
    [   68.058529] musb-hdrc: setup fifo_mode 4
    [   68.058561] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   68.092632] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
    [   68.162503] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
    [   68.599127] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #1, port1 00000104
    [   68.618629] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   68.618696] musb-hdrc: MHDRC RTL version 2.0 
    [   68.618715] musb-hdrc: setup fifo_mode 4
    [   68.618748] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   68.619126] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
    [   68.625008] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
    [   68.751572] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #2, port1 00000104
    [   68.903985] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #3, port1 00000104
    [   69.415958] usb 1-1: new high-speed USB device number 2 using musb-hdrc
    [   69.422906] usb 2-1: new high-speed USB device number 2 using musb-hdrc
    [   74.017039] input: USB 2.0 Camera as /devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1:1.0/input/input0
    [   74.192895] input: USB 2.0 Camera as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1:1.0/input/input1
    root@am335x-evm:~# dmesg | grep "uvc"
    [   73.918554] uvcvideo: Probing generic UVC device 1
    [   73.923027] uvcvideo: trying extra data from endpoint 0.
    [   73.923115] uvcvideo: Found format MJPEG.
    [   73.923141] uvcvideo: - 1600x1200 (15.0 fps)
    [   73.923158] uvcvideo: - 3264x2448 (15.0 fps)
    [   73.923174] uvcvideo: - 2592x1944 (15.0 fps)
    [   73.923190] uvcvideo: - 2048x1536 (15.0 fps)
    [   73.923206] uvcvideo: - 1280x960 (15.0 fps)
    [   73.923222] uvcvideo: - 1024x768 (30.0 fps)
    [   73.923239] uvcvideo: - 800x600 (30.0 fps)
    [   73.923255] uvcvideo: - 640x480 (30.0 fps)
    [   73.923272] uvcvideo: - 320x240 (30.0 fps)
    [   73.923287] uvcvideo: - 1600x1200 (15.0 fps)
    [   73.923308] uvcvideo: Found format YUV 4:2:2 (YUYV).
    [   73.923325] uvcvideo: - 1600x1200 (10.0 fps)
    [   73.923341] uvcvideo: - 3264x2448 (2.0 fps)
    [   73.923358] uvcvideo: - 2592x1944 (3.0 fps)
    [   73.923373] uvcvideo: - 2048x1536 (3.0 fps)
    [   73.923389] uvcvideo: - 1280x960 (10.0 fps)
    [   73.923405] uvcvideo: - 1024x768 (10.0 fps)
    [   73.923421] uvcvideo: - 800x600 (30.0 fps)
    [   73.923858] uvcvideo: - 640x480 (30.0 fps)
    [   73.923889] uvcvideo: - 320x240 (30.0 fps)
    [   73.923906] uvcvideo: - 1600x1200 (10.0 fps)
    [   73.923992] uvcvideo: Found a Status endpoint (addr 83).
    [   73.924014] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (05a3:8830)
    [   73.977830] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/2 to device 1 entity 1
    [   73.977912] uvcvideo: Adding mapping 'Exposure, Auto' to control 00000000-0000-0000-0000-000000000001/2.
    [   73.977950] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/3 to device 1 entity 1
    [   73.977975] uvcvideo: Adding mapping 'Exposure, Auto Priority' to control 00000000-0000-0000-0000-000000000001/3.
    [   73.978005] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/4 to device 1 entity 1
    [   73.978030] uvcvideo: Adding mapping 'Exposure (Absolute)' to control 00000000-0000-0000-0000-000000000001/4.
    [   73.978058] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/2 to device 1 entity 2
    [   73.978080] uvcvideo: Adding mapping 'Brightness' to control 00000000-0000-0000-0000-000000000101/2.
    [   73.978109] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/3 to device 1 entity 2
    [   73.978130] uvcvideo: Adding mapping 'Contrast' to control 00000000-0000-0000-0000-000000000101/3.
    [   73.978158] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/6 to device 1 entity 2
    [   73.978179] uvcvideo: Adding mapping 'Hue' to control 00000000-0000-0000-0000-000000000101/6.
    [   73.978207] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/7 to device 1 entity 2
    [   73.978229] uvcvideo: Adding mapping 'Saturation' to control 00000000-0000-0000-0000-000000000101/7.
    [   73.978257] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/8 to device 1 entity 2
    [   73.978278] uvcvideo: Adding mapping 'Sharpness' to control 00000000-0000-0000-0000-000000000101/8.
    [   73.978306] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/9 to device 1 entity 2
    [   73.978328] uvcvideo: Adding mapping 'Gamma' to control 00000000-0000-0000-0000-000000000101/9.
    [   73.978356] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/10 to device 1 entity 2
    [   73.978380] uvcvideo: Adding mapping 'White Balance Temperature' to control 00000000-0000-0000-0000-000000000101/10.
    [   73.978406] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/1 to device 1 entity 2
    [   73.978428] uvcvideo: Adding mapping 'Backlight Compensation' to control 00000000-0000-0000-0000-000000000101/1.
    [   73.978457] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/4 to device 1 entity 2
    [   73.978479] uvcvideo: Adding mapping 'Gain' to control 00000000-0000-0000-0000-000000000101/4.
    [   73.978508] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/5 to device 1 entity 2
    [   73.978532] uvcvideo: Adding mapping 'Power Line Frequency' to control 00000000-0000-0000-0000-000000000101/5.
    [   73.978562] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/11 to device 1 entity 2
    [   73.978601] uvcvideo: Adding mapping 'White Balance Temperature, Auto' to control 00000000-0000-0000-0000-000000000101/11.
    [   73.978630] uvcvideo: Scanning UVC chain: OT 5 <- XU 4 <- XU 3 <- PU 2 <- IT 1
    [   73.978708] uvcvideo: Found a valid video chain (1 -> 5).
    [   74.107465] uvcvideo: UVC device initialized.
    [   74.108008] uvcvideo: Probing generic UVC device 1
    [   74.108202] uvcvideo: trying extra data from endpoint 0.
    [   74.108258] uvcvideo: Found format MJPEG.
    [   74.108283] uvcvideo: - 1600x1200 (15.0 fps)
    [   74.108299] uvcvideo: - 3264x2448 (15.0 fps)
    [   74.108316] uvcvideo: - 2592x1944 (15.0 fps)
    [   74.108332] uvcvideo: - 2048x1536 (15.0 fps)
    [   74.108348] uvcvideo: - 1280x960 (15.0 fps)
    [   74.108364] uvcvideo: - 1024x768 (30.0 fps)
    [   74.108381] uvcvideo: - 800x600 (30.0 fps)
    [   74.108397] uvcvideo: - 640x480 (30.0 fps)
    [   74.108413] uvcvideo: - 320x240 (30.0 fps)
    [   74.108429] uvcvideo: - 1600x1200 (15.0 fps)
    [   74.108450] uvcvideo: Found format YUV 4:2:2 (YUYV).
    [   74.108467] uvcvideo: - 1600x1200 (10.0 fps)
    [   74.108482] uvcvideo: - 3264x2448 (2.0 fps)
    [   74.108498] uvcvideo: - 2592x1944 (3.0 fps)
    [   74.108514] uvcvideo: - 2048x1536 (3.0 fps)
    [   74.108530] uvcvideo: - 1280x960 (10.0 fps)
    [   74.108546] uvcvideo: - 1024x768 (10.0 fps)
    [   74.108562] uvcvideo: - 800x600 (30.0 fps)
    [   74.108577] uvcvideo: - 640x480 (30.0 fps)
    [   74.108593] uvcvideo: - 320x240 (30.0 fps)
    [   74.108609] uvcvideo: - 1600x1200 (10.0 fps)
    [   74.108668] uvcvideo: Found a Status endpoint (addr 83).
    [   74.108688] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (05a3:8830)
    [   74.163121] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/2 to device 1 entity 1
    [   74.163208] uvcvideo: Adding mapping 'Exposure, Auto' to control 00000000-0000-0000-0000-000000000001/2.
    [   74.163248] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/3 to device 1 entity 1
    [   74.163280] uvcvideo: Adding mapping 'Exposure, Auto Priority' to control 00000000-0000-0000-0000-000000000001/3.
    [   74.163312] uvcvideo: Added control 00000000-0000-0000-0000-000000000001/4 to device 1 entity 1
    [   74.163338] uvcvideo: Adding mapping 'Exposure (Absolute)' to control 00000000-0000-0000-0000-000000000001/4.
    [   74.165444] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/2 to device 1 entity 2
    [   74.178982] uvcvideo: Adding mapping 'Brightness' to control 00000000-0000-0000-0000-000000000101/2.
    [   74.179074] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/3 to device 1 entity 2
    [   74.179111] uvcvideo: Adding mapping 'Contrast' to control 00000000-0000-0000-0000-000000000101/3.
    [   74.179140] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/6 to device 1 entity 2
    [   74.179167] uvcvideo: Adding mapping 'Hue' to control 00000000-0000-0000-0000-000000000101/6.
    [   74.179196] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/7 to device 1 entity 2
    [   74.179223] uvcvideo: Adding mapping 'Saturation' to control 00000000-0000-0000-0000-000000000101/7.
    [   74.179251] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/8 to device 1 entity 2
    [   74.179277] uvcvideo: Adding mapping 'Sharpness' to control 00000000-0000-0000-0000-000000000101/8.
    [   74.179306] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/9 to device 1 entity 2
    [   74.179328] uvcvideo: Adding mapping 'Gamma' to control 00000000-0000-0000-0000-000000000101/9.
    [   74.179357] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/10 to device 1 entity 2
    [   74.179386] uvcvideo: Adding mapping 'White Balance Temperature' to control 00000000-0000-0000-0000-000000000101/10.
    [   74.179413] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/1 to device 1 entity 2
    [   74.179440] uvcvideo: Adding mapping 'Backlight Compensation' to control 00000000-0000-0000-0000-000000000101/1.
    [   74.179469] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/4 to device 1 entity 2
    [   74.179491] uvcvideo: Adding mapping 'Gain' to control 00000000-0000-0000-0000-000000000101/4.
    [   74.179519] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/5 to device 1 entity 2
    [   74.179544] uvcvideo: Adding mapping 'Power Line Frequency' to control 00000000-0000-0000-0000-000000000101/5.
    [   74.179574] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/11 to device 1 entity 2
    [   74.179598] uvcvideo: Adding mapping 'White Balance Temperature, Auto' to control 00000000-0000-0000-0000-000000000101/11.
    [   74.179631] uvcvideo: Scanning UVC chain: OT 5 <- XU 4 <- XU 3 <- PU 2 <- IT 1
    [   74.179710] uvcvideo: Found a valid video chain (1 -> 5).
    [   74.287500] uvcvideo: UVC device initialized.
    [   74.297710] usbcore: registered new interface driver uvcvideo
    [   74.553704] uvcvideo: uvc_v4l2_open
    [   74.554325] uvcvideo: uvc_v4l2_release
    [   74.569221] uvcvideo: uvc_v4l2_open
    [   74.569923] uvcvideo: uvc_v4l2_release
    [   76.545938] uvcvideo: Suspending interface 1
    [   76.546008] uvcvideo: Suspending interface 0
    [   76.566126] uvcvideo: Suspending interface 1
    [   76.566192] uvcvideo: Suspending interface 0
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    root@am335x-evm:~# cat /etc/os-release 
    ID="arago"
    NAME="Arago"
    VERSION="2016.12"
    VERSION_ID="2016.12"
    PRETTY_NAME="Arago 2016.12"
    root@am335x-evm:~# uname -a
    Linux am335x-evm 4.4.41-gf9f6f0db2d #4 PREEMPT Wed Apr 10 01:05:30 IST 2019 armv7l GNU/Linux
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    root@am335x-evm:~# v4l2-ctl -d 3 --all
    Driver Info (not using libv4l2):
            Driver name   : uvcvideo
            Card type     : USB 2.0 Camera
            Bus info      : usb-musb-hdrc.0.auto-1
            Driver version: 4.4.41
            Capabilities  : 0x84200001
                    Video Capture
                    Streaming
                    Extended Pix Format
                    Device Capabilities
            Device Caps   : 0x04200001
                    Video Capture
                    Streaming
                    Extended Pix Format
    Priority: 2
    Video input : 0 (Camera 1: ok)
    Format Video Capture:
            Width/Height      : 1600/1200
            Pixel Format      : 'MJPG'
            Field             : None
            Bytes per Line    : 0
            Size Image        : 3840589
            Colorspace        : Default
            Transfer Function : Default
            YCbCr Encoding    : Default
            Quantization      : Default
            Flags             : 
    Crop Capability Video Capture:
            Bounds      : Left 0, Top 0, Width 1600, Height 1200
            Default     : Left 0, Top 0, Width 1600, Height 1200
            Pixel Aspect: 1/1
    Selection: crop_default, Left 0, Top 0, Width 1600, Height 1200
    Selection: crop_bounds, Left 0, Top 0, Width 1600, Height 1200
    Streaming Parameters Video Capture:
            Capabilities     : timeperframe
            Frames per second: 25.000 (25/1)
            Read buffers     : 0
                         brightness (int)    : min=-64 max=64 step=1 default=0 value=0
                           contrast (int)    : min=0 max=64 step=1 default=32 value=32
                         saturation (int)    : min=0 max=128 step=1 default=105 value=105
                                hue (int)    : min=-40 max=40 step=1 default=0 value=0
     white_balance_temperature_auto (bool)   : default=1 value=1
                              gamma (int)    : min=72 max=500 step=1 default=100 value=100
                               gain (int)    : min=0 max=100 step=1 default=0 value=0
               power_line_frequency (menu)   : min=0 max=2 default=1 value=1
          white_balance_temperature (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                          sharpness (int)    : min=0 max=6 step=1 default=3 value=3
             backlight_compensation (int)    : min=0 max=2 step=1 default=1 value=1
                      exposure_auto (menu)   : min=0 max=3 default=3 value=3
                  exposure_absolute (int)    : min=1 max=5000 step=1 default=93 value=93 flags=inactive
             exposure_auto_priority (bool)   : default=0 value=1
    root@am335x-evm:~# v4l2-ctl -d 3 --list-formats-ext
    ioctl: VIDIOC_ENUM_FMT
            Index       : 0
            Type        : Video Capture
            Pixel Format: 'MJPG' (compressed)
            Name        : Motion-JPEG
                    Size: Discrete 1600x1200
                            Interval: Discrete 0.067s (15.000 fps)
                    Size: Discrete 3264x2448
                            Interval: Discrete 0.067s (15.000 fps)
                    Size: Discrete 2592x1944
                            Interval: Discrete 0.067s (15.000 fps)
                    Size: Discrete 2048x1536
                            Interval: Discrete 0.067s (15.000 fps)
                    Size: Discrete 1280x960
                            Interval: Discrete 0.067s (15.000 fps)
                    Size: Discrete 1024x768
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 800x600
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 640x480
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 320x240
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 1600x1200
                            Interval: Discrete 0.067s (15.000 fps)
    
            Index       : 1
            Type        : Video Capture
            Pixel Format: 'YUYV'
            Name        : YUYV 4:2:2
                    Size: Discrete 1600x1200
                            Interval: Discrete 0.100s (10.000 fps)
                    Size: Discrete 3264x2448
                            Interval: Discrete 0.500s (2.000 fps)
                    Size: Discrete 2592x1944
                            Interval: Discrete 0.333s (3.000 fps)
                    Size: Discrete 2048x1536
                            Interval: Discrete 0.333s (3.000 fps)
                    Size: Discrete 1280x960
                            Interval: Discrete 0.100s (10.000 fps)
                    Size: Discrete 1024x768
                            Interval: Discrete 0.100s (10.000 fps)
                    Size: Discrete 800x600
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 640x480
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 320x240
                            Interval: Discrete 0.033s (30.000 fps)
                    Size: Discrete 1600x1200
                            Interval: Discrete 0.100s (10.000 fps)
    
    
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    lsusb -d 05a3:8830 -v
    Bus 002 Device 002: ID 05a3:8830 ARC International 
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.01
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x05a3 ARC International
      idProduct          0x8830 
      bcdDevice            1.00
      iManufacturer           2 Sonix Technology Co., Ltd.
      iProduct                1 USB 2.0 Camera
      iSerial                 3 SN0179
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          897
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              256mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass         14 Video
          bFunctionSubClass       3 Video Interface Collection
          bFunctionProtocol       0 
          iFunction               5 HD USB Camera
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass        14 Video
          bInterfaceSubClass      1 Video Control
          bInterfaceProtocol      0 
          iInterface              5 HD USB Camera
          VideoControl Interface Descriptor:
            bLength                13
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdUVC               1.00
            wTotalLength          108
            dwClockFrequency       15.000000MHz
            bInCollection           1
            baInterfaceNr( 0)       1
          VideoControl Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
            bTerminalID             5
            wTerminalType      0x0101 USB Streaming
            bAssocTerminal          0
            bSourceID               4
            iTerminal               0 
          VideoControl Interface Descriptor:
            bLength                28
            bDescriptorType        36
            bDescriptorSubtype      6 (EXTENSION_UNIT)
            bUnitID                 3
            guidExtensionCode         {7033f028-1163-2e4a-ba2c-6890eb334016}
            bNumControl            24
            bNrPins                 1
            baSourceID( 0)          2
            bControlSize            3
            bmControls( 0)       0xff
            bmControls( 1)       0xff
            bmControls( 2)       0xff
            iExtension              0 
          VideoControl Interface Descriptor:
            bLength                29
            bDescriptorType        36
            bDescriptorSubtype      6 (EXTENSION_UNIT)
            bUnitID                 4
            guidExtensionCode         {b42153bd-35d6-45ca-b203-4e0149b301bc}
            bNumControl            32
            bNrPins                 1
            baSourceID( 0)          3
            bControlSize            4
            bmControls( 0)       0x03
            bmControls( 1)       0x80
            bmControls( 2)       0x3f
            bmControls( 3)       0x9f
            iExtension              0 
          VideoControl Interface Descriptor:
            bLength                18
            bDescriptorType        36
            bDescriptorSubtype      2 (INPUT_TERMINAL)
            bTerminalID             1
            wTerminalType      0x0201 Camera Sensor
            bAssocTerminal          0
            iTerminal               0 
            wObjectiveFocalLengthMin      0
            wObjectiveFocalLengthMax      0
            wOcularFocalLength            0
            bControlSize                  3
            bmControls           0x0000000e
              Auto-Exposure Mode
              Auto-Exposure Priority
              Exposure Time (Absolute)
          VideoControl Interface Descriptor:
            bLength                11
            bDescriptorType        36
            bDescriptorSubtype      5 (PROCESSING_UNIT)
          Warning: Descriptor too short
            bUnitID                 2
            bSourceID               1
            wMaxMultiplier          0
            bControlSize            2
            bmControls     0x0000177f
              Brightness
              Contrast
              Hue
              Saturation
              Sharpness
              Gamma
              White Balance Temperature
              Backlight Compensation
              Gain
              Power Line Frequency
              White Balance Temperature, Auto
            iProcessing             0 
            bmVideoStandards     0x21
              None
              PAL - 525/60
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0010  1x 16 bytes
            bInterval               6
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass        14 Video
          bInterfaceSubClass      2 Video Streaming
          bInterfaceProtocol      0 
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               1
            INTERFACE CLASS:  0f 24 01 02 df 02 82 00 05 02 01 01 01 00 00
            INTERFACE CLASS:  0b 24 06 01 0a 00 01 00 00 00 00
            INTERFACE CLASS:  1e 24 07 01 00 40 06 b0 04 00 40 77 1b 00 40 77 1b 4d 9a 3a 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 02 00 c0 0c 90 09 00 40 4d 72 00 40 4d 72 4d da f3 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 03 00 20 0a 98 07 00 d0 14 48 00 d0 14 48 4d c8 99 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 04 00 00 08 00 06 00 00 00 2d 00 00 00 2d 4d 02 60 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 05 00 00 05 c0 03 00 00 94 11 00 00 94 11 4d 82 25 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 06 00 00 04 00 03 00 00 80 16 00 00 80 16 4d 02 18 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 07 00 20 03 58 02 00 a0 bb 0d 00 a0 bb 0d 4d a8 0e 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 08 00 80 02 e0 01 00 00 ca 08 00 00 ca 08 4d 62 09 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 09 00 40 01 f0 00 00 80 32 02 00 80 32 02 4d 5a 02 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 0a 00 40 06 b0 04 00 40 77 1b 00 40 77 1b 4d 9a 3a 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  26 24 03 00 08 c0 0c 90 09 20 0a 98 07 00 08 00 06 40 06 b0 04 00 05 c0 03 00 04 00 03 20 03 58 02 80 02 e0 01 00
            INTERFACE CLASS:  1b 24 04 02 0a 59 55 59 32 00 00 10 00 80 00 00 aa 00 38 9b 71 10 01 00 00 00 00
            INTERFACE CLASS:  1e 24 05 01 00 40 06 b0 04 00 80 4f 12 00 80 4f 12 00 98 3a 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 02 00 c0 0c 90 09 00 80 3d 0f 00 80 3d 0f 00 d8 f3 00 40 4b 4c 00 01 40 4b 4c 00
            INTERFACE CLASS:  1e 24 05 03 00 20 0a 98 07 00 90 6a 0e 00 90 6a 0e 00 c6 99 00 d5 dc 32 00 01 d5 dc 32 00
            INTERFACE CLASS:  1e 24 05 04 00 00 08 00 06 00 00 00 09 00 00 00 09 00 00 60 00 d5 dc 32 00 01 d5 dc 32 00
            INTERFACE CLASS:  1e 24 05 05 00 00 05 c0 03 00 00 b8 0b 00 00 b8 0b 00 80 25 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 06 00 00 04 00 03 00 00 80 07 00 00 80 07 00 00 18 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 07 00 20 03 58 02 00 a0 bb 0d 00 a0 bb 0d 00 a6 0e 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 08 00 80 02 e0 01 00 00 ca 08 00 00 ca 08 00 60 09 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 09 00 40 01 f0 00 00 80 32 02 00 80 32 02 00 58 02 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 0a 00 40 06 b0 04 00 80 4f 12 00 80 4f 12 00 98 3a 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  26 24 03 00 08 c0 0c 90 09 20 0a 98 07 00 08 00 06 40 06 b0 04 00 05 c0 03 00 04 00 03 20 03 58 02 80 02 e0 01 00
            INTERFACE CLASS:  06 24 0d 01 01 04
    Binary Object Store Descriptor:
      bLength                 5
      bDescriptorType        15
      wTotalLength           12
      bNumDeviceCaps          1
      USB 2.0 Extension Device Capability:
        bLength                 7
        bDescriptorType        16
        bDevCapabilityType      2
        bmAttributes   0x00000002
          HIRD Link Power Management (LPM) Supported
    can't get debug descriptor: Resource temporarily unavailable
    Device Status:     0x0002
      (Bus Powered)
      Remote Wakeup Enabled
    
    Bus 001 Device 002: ID 05a3:8830 ARC International 
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.01
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x05a3 ARC International
      idProduct          0x8830 
      bcdDevice            1.00
      iManufacturer           2 Sonix Technology Co., Ltd.
      iProduct                1 USB 2.0 Camera
      iSerial                 3 SN0179
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength          897
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              256mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass         14 Video
          bFunctionSubClass       3 Video Interface Collection
          bFunctionProtocol       0 
          iFunction               5 HD USB Camera
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass        14 Video
          bInterfaceSubClass      1 Video Control
          bInterfaceProtocol      0 
          iInterface              5 HD USB Camera
          VideoControl Interface Descriptor:
            bLength                13
            bDescriptorType        36
            bDescriptorSubtype      1 (HEADER)
            bcdUVC               1.00
            wTotalLength          108
            dwClockFrequency       15.000000MHz
            bInCollection           1
            baInterfaceNr( 0)       1
          VideoControl Interface Descriptor:
            bLength                 9
            bDescriptorType        36
            bDescriptorSubtype      3 (OUTPUT_TERMINAL)
            bTerminalID             5
            wTerminalType      0x0101 USB Streaming
            bAssocTerminal          0
            bSourceID               4
            iTerminal               0 
          VideoControl Interface Descriptor:
            bLength                28
            bDescriptorType        36
            bDescriptorSubtype      6 (EXTENSION_UNIT)
            bUnitID                 3
            guidExtensionCode         {7033f028-1163-2e4a-ba2c-6890eb334016}
            bNumControl            24
            bNrPins                 1
            baSourceID( 0)          2
            bControlSize            3
            bmControls( 0)       0xff
            bmControls( 1)       0xff
            bmControls( 2)       0xff
            iExtension              0 
          VideoControl Interface Descriptor:
            bLength                29
            bDescriptorType        36
            bDescriptorSubtype      6 (EXTENSION_UNIT)
            bUnitID                 4
            guidExtensionCode         {b42153bd-35d6-45ca-b203-4e0149b301bc}
            bNumControl            32
            bNrPins                 1
            baSourceID( 0)          3
            bControlSize            4
            bmControls( 0)       0x03
            bmControls( 1)       0x80
            bmControls( 2)       0x3f
            bmControls( 3)       0x9f
            iExtension              0 
          VideoControl Interface Descriptor:
            bLength                18
            bDescriptorType        36
            bDescriptorSubtype      2 (INPUT_TERMINAL)
            bTerminalID             1
            wTerminalType      0x0201 Camera Sensor
            bAssocTerminal          0
            iTerminal               0 
            wObjectiveFocalLengthMin      0
            wObjectiveFocalLengthMax      0
            wOcularFocalLength            0
            bControlSize                  3
            bmControls           0x0000000e
              Auto-Exposure Mode
              Auto-Exposure Priority
              Exposure Time (Absolute)
          VideoControl Interface Descriptor:
            bLength                11
            bDescriptorType        36
            bDescriptorSubtype      5 (PROCESSING_UNIT)
          Warning: Descriptor too short
            bUnitID                 2
            bSourceID               1
            wMaxMultiplier          0
            bControlSize            2
            bmControls     0x0000177f
              Brightness
              Contrast
              Hue
              Saturation
              Sharpness
              Gamma
              White Balance Temperature
              Backlight Compensation
              Gain
              Power Line Frequency
              White Balance Temperature, Auto
            iProcessing             0 
            bmVideoStandards     0x21
              None
              PAL - 525/60
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0010  1x 16 bytes
            bInterval               6
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass        14 Video
          bInterfaceSubClass      2 Video Streaming
          bInterfaceProtocol      0 
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               1
            INTERFACE CLASS:  0f 24 01 02 df 02 82 00 05 02 01 01 01 00 00
            INTERFACE CLASS:  0b 24 06 01 0a 00 01 00 00 00 00
            INTERFACE CLASS:  1e 24 07 01 00 40 06 b0 04 00 40 77 1b 00 40 77 1b 4d 9a 3a 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 02 00 c0 0c 90 09 00 40 4d 72 00 40 4d 72 4d da f3 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 03 00 20 0a 98 07 00 d0 14 48 00 d0 14 48 4d c8 99 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 04 00 00 08 00 06 00 00 00 2d 00 00 00 2d 4d 02 60 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 05 00 00 05 c0 03 00 00 94 11 00 00 94 11 4d 82 25 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  1e 24 07 06 00 00 04 00 03 00 00 80 16 00 00 80 16 4d 02 18 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 07 00 20 03 58 02 00 a0 bb 0d 00 a0 bb 0d 4d a8 0e 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 08 00 80 02 e0 01 00 00 ca 08 00 00 ca 08 4d 62 09 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 09 00 40 01 f0 00 00 80 32 02 00 80 32 02 4d 5a 02 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 07 0a 00 40 06 b0 04 00 40 77 1b 00 40 77 1b 4d 9a 3a 00 2a 2c 0a 00 01 2a 2c 0a 00
            INTERFACE CLASS:  26 24 03 00 08 c0 0c 90 09 20 0a 98 07 00 08 00 06 40 06 b0 04 00 05 c0 03 00 04 00 03 20 03 58 02 80 02 e0 01 00
            INTERFACE CLASS:  1b 24 04 02 0a 59 55 59 32 00 00 10 00 80 00 00 aa 00 38 9b 71 10 01 00 00 00 00
            INTERFACE CLASS:  1e 24 05 01 00 40 06 b0 04 00 80 4f 12 00 80 4f 12 00 98 3a 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 02 00 c0 0c 90 09 00 80 3d 0f 00 80 3d 0f 00 d8 f3 00 40 4b 4c 00 01 40 4b 4c 00
            INTERFACE CLASS:  1e 24 05 03 00 20 0a 98 07 00 90 6a 0e 00 90 6a 0e 00 c6 99 00 d5 dc 32 00 01 d5 dc 32 00
            INTERFACE CLASS:  1e 24 05 04 00 00 08 00 06 00 00 00 09 00 00 00 09 00 00 60 00 d5 dc 32 00 01 d5 dc 32 00
            INTERFACE CLASS:  1e 24 05 05 00 00 05 c0 03 00 00 b8 0b 00 00 b8 0b 00 80 25 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 06 00 00 04 00 03 00 00 80 07 00 00 80 07 00 00 18 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  1e 24 05 07 00 20 03 58 02 00 a0 bb 0d 00 a0 bb 0d 00 a6 0e 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 08 00 80 02 e0 01 00 00 ca 08 00 00 ca 08 00 60 09 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 09 00 40 01 f0 00 00 80 32 02 00 80 32 02 00 58 02 00 15 16 05 00 01 15 16 05 00
            INTERFACE CLASS:  1e 24 05 0a 00 40 06 b0 04 00 80 4f 12 00 80 4f 12 00 98 3a 00 40 42 0f 00 01 40 42 0f 00
            INTERFACE CLASS:  26 24 03 00 08 c0 0c 90 09 20 0a 98 07 00 08 00 06 40 06 b0 04 00 05 c0 03 00 04 00 03 20 03 58 02 80 02 e0 01 00
            INTERFACE CLASS:  06 24 0d 01 01 04
    Binary Object Store Descriptor:
      bLength                 5
      bDescriptorType        15
      wTotalLength           12
      bNumDeviceCaps          1
      USB 2.0 Extension Device Capability:
        bLength                 7
        bDescriptorType        16
        bDevCapabilityType      2
        bmAttributes   0x00000002
          HIRD Link Power Management (LPM) Supported
    can't get debug descriptor: Resource temporarily unavailable
    Device Status:     0x0002
      (Bus Powered)
      Remote Wakeup Enabled
    
    
    
    Hi,

    Please find requested details in  attached file.

    In kernel config CONFIG_USB_TI_CPPI41_DMA=y enabled, no log regarding it in dmesg. Only edma log.

    Please confirm musb dma capabilities are enabled or not.

    On more point MJPEG frame 3264X2448 is of quality 65% and maximum size I observed for a good quality image is 850KB.

    Best Regards,

    Vikas

  • Hi Vikas,

    If you have the following two kernel options enabled, then musb dma is enabled.

    root@am335x-evm:~# zcat /proc/config.gz | grep CPPI
    CONFIG_USB_TI_CPPI41_DMA=y
    CONFIG_TI_CPPI41=y
    

    How do you capture the MJPEG picture? What application do you use?

    As far as I know, not every usb webcam supports static picture capturing. In such case if you try to capture one frame of a video stream, you might run into usb throughput limitation.

    Your camera supports 3264*2448 at 15fps, then the throughput would be

    850KB * 15 = 12.75MB/s

    which is more than AM335x USB RX Bulk transfer capability.

  • root@am335x-evm:~# zcat /proc/config.gz | grep "cpp"
    root@am335x-evm:~# zcat /proc/config.gz | grep -i "cpp"                                                                                        
    CONFIG_USB_TI_CPPI41_DMA=y
    CONFIG_TI_CPPI41=y
    root@am335x-evm:~# dmesg | grep "CPP"
    root@am335x-evm:~# dmesg | grep "musb"
    [   67.817354] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   67.817422] musb-hdrc: MHDRC RTL version 2.0 
    [   67.817442] musb-hdrc: setup fifo_mode 4
    [   67.817476] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   67.856708] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
    [   67.862625] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
    [   68.356898] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #1, port1 00000104
    [   68.418819] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   68.418888] musb-hdrc: MHDRC RTL version 2.0 
    [   68.418908] musb-hdrc: setup fifo_mode 4
    [   68.418941] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   68.419319] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
    [   68.509314] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #2, port1 00000104
    [   68.568154] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
    [   68.661759] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #3, port1 00000104
    [   68.814187] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (80, <SessEnd), retry #3, port1 0008010c
    [   69.265956] usb 2-1: new high-speed USB device number 2 using musb-hdrc
    [   73.625228] input: USB 2.0 Camera as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1:1.0/input/input0
    root@am335x-evm:~# zcat /proc/config.gz | grep -i "musb"                                                                                    
    CONFIG_USB_MUSB_HDRC=m
    # CONFIG_USB_MUSB_HOST is not set
    # CONFIG_USB_MUSB_GADGET is not set
    CONFIG_USB_MUSB_DUAL_ROLE=y
    CONFIG_USB_MUSB_OMAP2PLUS=m
    CONFIG_USB_MUSB_AM35X=m
    CONFIG_USB_MUSB_DSPS=m
    CONFIG_USB_MUSB_AM335X_CHILD=m
    # MUSB DMA mode
    # CONFIG_MUSB_PIO_ONLY is not set
    root@am335x-evm:~# dmesg | grep -i "cpp"                                                                                                       
    root@am335x-evm:~# dmesg | grep -i "dma"
    [    3.228665] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    3.399559] edma 49000000.edma: TI EDMA DMA engine driver
    root@am335x-evm:~# lsmod | grep -i "dma"                                                                                                       
    root@am335x-evm:~# lsmod | grep -i "musb"
    musb_dsps              14456  0
    musb_hdrc             155109  1 musb_dsps
    udc_core               21384  2 musb_hdrc,libcomposite
    usbcore               395566  2 uvcvideo,musb_hdrc
    musb_am335x             1743  0
    root@am335x-evm:~# ls
    
    root@am335x-evm:~# zcat /proc/config.gz | grep "cpp"
    root@am335x-evm:~# zcat /proc/config.gz | grep -i "cpp"                                                                                        
    CONFIG_USB_TI_CPPI41_DMA=y
    CONFIG_TI_CPPI41=y
    root@am335x-evm:~# dmesg | grep "CPP"
    root@am335x-evm:~# dmesg | grep "musb"
    [   67.817354] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   67.817422] musb-hdrc: MHDRC RTL version 2.0 
    [   67.817442] musb-hdrc: setup fifo_mode 4
    [   67.817476] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   67.856708] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
    [   67.862625] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
    [   68.356898] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #1, port1 00000104
    [   68.418819] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    [   68.418888] musb-hdrc: MHDRC RTL version 2.0 
    [   68.418908] musb-hdrc: setup fifo_mode 4
    [   68.418941] musb-hdrc: 28/31 max ep, 16384/16384 memory
    [   68.419319] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
    [   68.509314] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #2, port1 00000104
    [   68.568154] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
    [   68.661759] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (81, <SessEnd), retry #3, port1 00000104
    [   68.814187] musb-hdrc musb-hdrc.0.auto: VBUS_ERROR in a_wait_vrise (80, <SessEnd), retry #3, port1 0008010c
    [   69.265956] usb 2-1: new high-speed USB device number 2 using musb-hdrc
    [   73.625228] input: USB 2.0 Camera as /devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1:1.0/input/input0
    root@am335x-evm:~# zcat /proc/config.gz | grep -i "musb"                                                                                    
    CONFIG_USB_MUSB_HDRC=m
    # CONFIG_USB_MUSB_HOST is not set
    # CONFIG_USB_MUSB_GADGET is not set
    CONFIG_USB_MUSB_DUAL_ROLE=y
    CONFIG_USB_MUSB_OMAP2PLUS=m
    CONFIG_USB_MUSB_AM35X=m
    CONFIG_USB_MUSB_DSPS=m
    CONFIG_USB_MUSB_AM335X_CHILD=m
    # MUSB DMA mode
    # CONFIG_MUSB_PIO_ONLY is not set
    root@am335x-evm:~# dmesg | grep -i "cpp"                                                                                                       
    root@am335x-evm:~# dmesg | grep -i "dma"
    [    3.228665] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    3.399559] edma 49000000.edma: TI EDMA DMA engine driver
    root@am335x-evm:~# lsmod | grep -i "dma"                                                                                                       
    root@am335x-evm:~# lsmod | grep -i "musb"
    musb_dsps              14456  0
    musb_hdrc             155109  1 musb_dsps
    udc_core               21384  2 musb_hdrc,libcomposite
    usbcore               395566  2 uvcvideo,musb_hdrc
    musb_am335x             1743  0
    root@am335x-evm:~# ls
    
    6011.config.txt
    /dts-v1/;
    
    / {
    	#address-cells = <0x1>;
    	#size-cells = <0x1>;
    	compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
    	interrupt-parent = <0x1>;
    	model = "TI AM335x BeagleBone Black";
    
    	chosen {
    	};
    
    	aliases {
    		i2c0 = "/ocp/i2c@44e0b000";
    		i2c1 = "/ocp/i2c@4802a000";
    		i2c2 = "/ocp/i2c@4819c000";
    		serial0 = "/ocp/serial@44e09000";
    		serial1 = "/ocp/serial@48022000";
    		serial2 = "/ocp/serial@48024000";
    		serial3 = "/ocp/serial@481a6000";
    		serial4 = "/ocp/serial@481a8000";
    		serial5 = "/ocp/serial@481aa000";
    		d_can0 = "/ocp/can@481cc000";
    		d_can1 = "/ocp/can@481d0000";
    		usb0 = "/ocp/usb@47400000/usb@47401000";
    		usb1 = "/ocp/usb@47400000/usb@47401800";
    		phy0 = "/ocp/usb@47400000/usb-phy@47401300";
    		phy1 = "/ocp/usb@47400000/usb-phy@47401b00";
    		ethernet0 = "/ocp/ethernet@4a100000/slave@4a100200";
    		ethernet1 = "/ocp/ethernet@4a100000/slave@4a100300";
    	};
    
    	memory {
    		device_type = "memory";
    		reg = <0x80000000 0x10000000>;
    	};
    
    	cpus {
    		#address-cells = <0x1>;
    		#size-cells = <0x0>;
    
    		cpu@0 {
    			compatible = "arm,cortex-a8";
    			enable-method = "ti,am3352";
    			device_type = "cpu";
    			reg = <0x0>;
    			operating-points-v2 = <0x2>;
    			ti,syscon-efuse = <0x3 0x7fc 0x1fff 0x0>;
    			ti,syscon-rev = <0x3 0x600>;
    			clocks = <0x4>;
    			clock-names = "cpu";
    			clock-latency = <0x493e0>;
    			cpu-idle-states = <0x5>;
    			cpu0-supply = <0x6>;
    		};
    
    		idle-states {
    
    			mpu_gate {
    				compatible = "arm,idle-state";
    				entry-latency-us = <0x28>;
    				exit-latency-us = <0x5a>;
    				min-residency-us = <0x12c>;
    				ti,idle-wkup-m3;
    				linux,phandle = <0x5>;
    				phandle = <0x5>;
    			};
    		};
    	};
    
    	opp_table0 {
    		compatible = "operating-points-v2";
    		linux,phandle = <0x2>;
    		phandle = <0x2>;
    
    		opp50@300000000 {
    			opp-hz = <0x0 0x11e1a300>;
    			opp-microvolt = <0xe7ef0 0xe34b8 0xec928>;
    			opp-supported-hw = <0x6 0x10>;
    			opp-suspend;
    		};
    
    		opp100@275000000 {
    			opp-hz = <0x0 0x10642ac0>;
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-supported-hw = <0x1 0xff>;
    			opp-suspend;
    		};
    
    		opp100@300000000 {
    			opp-hz = <0x0 0x11e1a300>;
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-supported-hw = <0x6 0x20>;
    			opp-suspend;
    		};
    
    		opp100@500000000 {
    			opp-hz = <0x0 0x1dcd6500>;
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		opp100@600000000 {
    			opp-hz = <0x0 0x23c34600>;
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-supported-hw = <0x6 0x40>;
    		};
    
    		opp120@600000000 {
    			opp-hz = <0x0 0x23c34600>;
    			opp-microvolt = <0x124f80 0x11f1c0 0x12ad40>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		opp120@720000000 {
    			opp-hz = <0x0 0x2aea5400>;
    			opp-microvolt = <0x124f80 0x11f1c0 0x12ad40>;
    			opp-supported-hw = <0x6 0x80>;
    		};
    
    		oppturbo@720000000 {
    			opp-hz = <0x0 0x2aea5400>;
    			opp-microvolt = <0x1339e0 0x12d770 0x139c50>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		oppturbo@800000000 {
    			opp-hz = <0x0 0x2faf0800>;
    			opp-microvolt = <0x1339e0 0x12d770 0x139c50>;
    			opp-supported-hw = <0x6 0x100>;
    		};
    
    		oppnitro@1000000000 {
    			opp-hz = <0x0 0x3b9aca00>;
    			opp-microvolt = <0x1437c8 0x13d044 0x149f4c>;
    			opp-supported-hw = <0x6 0x100>;
    		};
    	};
    
    	pmu {
    		compatible = "arm,cortex-a8-pmu";
    		interrupts = <0x3>;
    	};
    
    	soc {
    		compatible = "ti,omap-infra";
    
    		mpu {
    			compatible = "ti,omap3-mpu";
    			ti,hwmods = "mpu";
    			sram = <0x7>;
    		};
    	};
    
    	ocp {
    		compatible = "simple-bus";
    		#address-cells = <0x1>;
    		#size-cells = <0x1>;
    		ranges;
    		ti,hwmods = "l3_main";
    
    		l4_wkup@44c00000 {
    			compatible = "ti,am3-l4-wkup", "simple-bus";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ranges = <0x0 0x44c00000 0x280000>;
    
    			wkup_m3@100000 {
    				compatible = "ti,am3352-wkup-m3";
    				reg = <0x100000 0x4000 0x180000 0x2000>;
    				reg-names = "umem", "dmem";
    				ti,hwmods = "wkup_m3";
    				ti,pm-firmware = "am335x-pm-firmware.elf";
    				linux,phandle = <0x2a>;
    				phandle = <0x2a>;
    			};
    
    			prcm@200000 {
    				compatible = "ti,am3-prcm";
    				reg = <0x200000 0x4000>;
    
    				clocks {
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    
    					clk_32768_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x8000>;
    						linux,phandle = <0x18>;
    						phandle = <0x18>;
    					};
    
    					clk_rc32k_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x7d00>;
    						linux,phandle = <0x17>;
    						phandle = <0x17>;
    					};
    
    					virt_19200000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x124f800>;
    						linux,phandle = <0x25>;
    						phandle = <0x25>;
    					};
    
    					virt_24000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x16e3600>;
    						linux,phandle = <0x26>;
    						phandle = <0x26>;
    					};
    
    					virt_25000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x17d7840>;
    						linux,phandle = <0x27>;
    						phandle = <0x27>;
    					};
    
    					virt_26000000_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0x18cba80>;
    						linux,phandle = <0x28>;
    						phandle = <0x28>;
    					};
    
    					tclkin_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-clock";
    						clock-frequency = <0xb71b00>;
    						linux,phandle = <0x16>;
    						phandle = <0x16>;
    					};
    
    					dpll_core_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-core-clock";
    						clocks = <0x8 0x8>;
    						reg = <0x490 0x45c 0x468>;
    						linux,phandle = <0x9>;
    						phandle = <0x9>;
    					};
    
    					dpll_core_x2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-x2-clock";
    						clocks = <0x9>;
    						linux,phandle = <0xa>;
    						phandle = <0xa>;
    					};
    
    					dpll_core_m4_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						reg = <0x480>;
    						ti,index-starts-at-one;
    						linux,phandle = <0x12>;
    						phandle = <0x12>;
    					};
    
    					dpll_core_m5_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						reg = <0x484>;
    						ti,index-starts-at-one;
    						linux,phandle = <0x1a>;
    						phandle = <0x1a>;
    					};
    
    					dpll_core_m6_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						reg = <0x4d8>;
    						ti,index-starts-at-one;
    					};
    
    					dpll_mpu_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-clock";
    						clocks = <0x8 0x8>;
    						reg = <0x488 0x420 0x42c>;
    						linux,phandle = <0x4>;
    						phandle = <0x4>;
    					};
    
    					dpll_mpu_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x4>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a8>;
    						ti,index-starts-at-one;
    					};
    
    					dpll_ddr_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x8 0x8>;
    						reg = <0x494 0x434 0x440>;
    						linux,phandle = <0xb>;
    						phandle = <0xb>;
    					};
    
    					dpll_ddr_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xb>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a0>;
    						ti,index-starts-at-one;
    						linux,phandle = <0xc>;
    						phandle = <0xc>;
    					};
    
    					dpll_ddr_m2_div2_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					dpll_disp_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x8 0x8>;
    						reg = <0x498 0x448 0x454>;
    						linux,phandle = <0xd>;
    						phandle = <0xd>;
    					};
    
    					dpll_disp_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xd>;
    						ti,max-div = <0x1f>;
    						reg = <0x4a4>;
    						ti,index-starts-at-one;
    						ti,set-rate-parent;
    						linux,phandle = <0x14>;
    						phandle = <0x14>;
    					};
    
    					dpll_per_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,am3-dpll-no-gate-j-type-clock";
    						clocks = <0x8 0x8>;
    						reg = <0x48c 0x470 0x49c>;
    						linux,phandle = <0xe>;
    						phandle = <0xe>;
    					};
    
    					dpll_per_m2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0xe>;
    						ti,max-div = <0x1f>;
    						reg = <0x4ac>;
    						ti,index-starts-at-one;
    						linux,phandle = <0xf>;
    						phandle = <0xf>;
    					};
    
    					dpll_per_m2_div4_wkupdm_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x4>;
    					};
    
    					dpll_per_m2_div4_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x4>;
    					};
    
    					cefuse_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x8>;
    						ti,bit-shift = <0x1>;
    						reg = <0xa20>;
    					};
    
    					clk_24mhz {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x8>;
    						linux,phandle = <0x10>;
    						phandle = <0x10>;
    					};
    
    					clkdiv32k_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x10>;
    						clock-mult = <0x1>;
    						clock-div = <0x2dc>;
    						linux,phandle = <0x11>;
    						phandle = <0x11>;
    					};
    
    					clkdiv32k_ick {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x11>;
    						ti,bit-shift = <0x1>;
    						reg = <0x14c>;
    						linux,phandle = <0x15>;
    						phandle = <0x15>;
    					};
    
    					l3_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    						linux,phandle = <0x13>;
    						phandle = <0x13>;
    					};
    
    					pruss_ocp_gclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x14>;
    						reg = <0x530>;
    					};
    
    					mmu_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						ti,bit-shift = <0x1>;
    						reg = <0x914>;
    					};
    
    					timer1_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x8 0x15 0x16 0x17 0x18>;
    						reg = <0x528>;
    					};
    
    					timer2_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x508>;
    					};
    
    					timer3_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x50c>;
    					};
    
    					timer4_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x510>;
    					};
    
    					timer5_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x518>;
    					};
    
    					timer6_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x51c>;
    					};
    
    					timer7_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						reg = <0x504>;
    					};
    
    					usbotg_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0xe>;
    						ti,bit-shift = <0x8>;
    						reg = <0x47c>;
    					};
    
    					dpll_core_m4_div2_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    						linux,phandle = <0x19>;
    						phandle = <0x19>;
    					};
    
    					ieee5000_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x19>;
    						ti,bit-shift = <0x1>;
    						reg = <0xe4>;
    					};
    
    					wdt1_fck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x17 0x15>;
    						reg = <0x538>;
    					};
    
    					l4_rtc_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					l4hs_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l3s_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l4fw_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					l4ls_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    						linux,phandle = <0x29>;
    						phandle = <0x29>;
    					};
    
    					sysclk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						clock-div = <0x1>;
    					};
    
    					cpsw_125mhz_gclk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0x1a>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    						linux,phandle = <0x47>;
    						phandle = <0x47>;
    					};
    
    					cpsw_cpts_rft_clk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x1a 0x12>;
    						reg = <0x520>;
    						linux,phandle = <0x48>;
    						phandle = <0x48>;
    					};
    
    					gpio0_dbclk_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x17 0x18 0x15>;
    						reg = <0x53c>;
    						linux,phandle = <0x1b>;
    						phandle = <0x1b>;
    					};
    
    					gpio0_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x1b>;
    						ti,bit-shift = <0x12>;
    						reg = <0x408>;
    					};
    
    					gpio1_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						ti,bit-shift = <0x12>;
    						reg = <0xac>;
    					};
    
    					gpio2_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						ti,bit-shift = <0x12>;
    						reg = <0xb0>;
    					};
    
    					gpio3_dbclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						ti,bit-shift = <0x12>;
    						reg = <0xb4>;
    					};
    
    					lcd_gclk {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x14 0x1a 0xf>;
    						reg = <0x534>;
    						ti,set-rate-parent;
    						linux,phandle = <0x1d>;
    						phandle = <0x1d>;
    					};
    
    					mmc_clk {
    						#clock-cells = <0x0>;
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						clock-div = <0x2>;
    					};
    
    					gfx_fclk_clksel_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x12 0xf>;
    						ti,bit-shift = <0x1>;
    						reg = <0x52c>;
    						linux,phandle = <0x1c>;
    						phandle = <0x1c>;
    					};
    
    					gfx_fck_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x1c>;
    						reg = <0x52c>;
    						ti,max-div = <0x2>;
    						linux,phandle = <0x51>;
    						phandle = <0x51>;
    					};
    
    					sysclkout_pre_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x18 0x13 0xc 0xf 0x1d>;
    						reg = <0x700>;
    						linux,phandle = <0x1e>;
    						phandle = <0x1e>;
    					};
    
    					clkout2_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x1e>;
    						ti,bit-shift = <0x3>;
    						ti,max-div = <0x8>;
    						reg = <0x700>;
    						linux,phandle = <0x23>;
    						phandle = <0x23>;
    					};
    
    					dbg_sysclk_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x8>;
    						ti,bit-shift = <0x13>;
    						reg = <0x414>;
    						linux,phandle = <0x1f>;
    						phandle = <0x1f>;
    					};
    
    					dbg_clka_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						ti,bit-shift = <0x1e>;
    						reg = <0x414>;
    						linux,phandle = <0x20>;
    						phandle = <0x20>;
    					};
    
    					stm_pmd_clock_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x1f 0x20>;
    						ti,bit-shift = <0x16>;
    						reg = <0x414>;
    						linux,phandle = <0x21>;
    						phandle = <0x21>;
    					};
    
    					trace_pmd_clk_mux_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,mux-clock";
    						clocks = <0x1f 0x20>;
    						ti,bit-shift = <0x14>;
    						reg = <0x414>;
    						linux,phandle = <0x22>;
    						phandle = <0x22>;
    					};
    
    					stm_clk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x21>;
    						ti,bit-shift = <0x1b>;
    						ti,max-div = <0x40>;
    						reg = <0x414>;
    						ti,index-power-of-two;
    					};
    
    					trace_clk_div_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,divider-clock";
    						clocks = <0x22>;
    						ti,bit-shift = <0x18>;
    						ti,max-div = <0x40>;
    						reg = <0x414>;
    						ti,index-power-of-two;
    					};
    
    					clkout2_ck {
    						#clock-cells = <0x0>;
    						compatible = "ti,gate-clock";
    						clocks = <0x23>;
    						ti,bit-shift = <0x7>;
    						reg = <0x700>;
    					};
    				};
    
    				clockdomains {
    
    					clk_24mhz_clkdm {
    						compatible = "ti,clockdomain";
    						clocks = <0x15>;
    					};
    				};
    			};
    
    			scm@210000 {
    				compatible = "ti,am3-scm", "simple-bus";
    				reg = <0x210000 0x2000>;
    				#address-cells = <0x1>;
    				#size-cells = <0x1>;
    				ranges = <0x0 0x210000 0x2000>;
    
    				pinmux@800 {
    					compatible = "pinctrl-single";
    					reg = <0x800 0x238>;
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    					pinctrl-single,register-width = <0x20>;
    					pinctrl-single,function-mask = <0x7f>;
    					pinctrl-names = "default";
    					pinctrl-0 = <0x24>;
    
    					user_leds_default {
    						pinctrl-single,pins = <0x54 0x7 0x58 0x27 0x5c 0x7 0x60 0x17>;
    						linux,phandle = <0x52>;
    						phandle = <0x52>;
    					};
    
    					user_leds_sleep {
    						pinctrl-single,pins = <0x54 0x27 0x58 0x27 0x5c 0x27 0x60 0x27>;
    						linux,phandle = <0x53>;
    						phandle = <0x53>;
    					};
    
    					pinmux_i2c0_pins {
    						pinctrl-single,pins = <0x188 0x30 0x18c 0x30>;
    						linux,phandle = <0x34>;
    						phandle = <0x34>;
    					};
    
    					pinmux_i2c1_pins {
    						pinctrl-single,pins = <0x158 0x72 0x15c 0x72>;
    						linux,phandle = <0x95>;
    						phandle = <0x95>;
    					};
    
    					pinmux_i2c2_pins {
    						pinctrl-single,pins = <0x178 0x33 0x17c 0x33>;
    						linux,phandle = <0x38>;
    						phandle = <0x38>;
    					};
    
    					pinmux_sp1_pins {
    						pinctrl-single,pins = <0x190 0x33 0x194 0x33 0x198 0x13 0x19c 0x13>;
    						linux,phandle = <0x91>;
    						phandle = <0x91>;
    					};
    
    					pinmux_gpio2_pins {
    						pinctrl-single,pins = <0x58 0x37>;
    						linux,phandle = <0x92>;
    						phandle = <0x92>;
    					};
    
    					pinmux_uart0_pins {
    						pinctrl-single,pins = <0x170 0x30 0x174 0x0>;
    						linux,phandle = <0x31>;
    						phandle = <0x31>;
    					};
    
    					pinmux_uart1_pins {
    						pinctrl-single,pins = <0x180 0x30 0x184 0x0 0x178 0x30 0x17c 0x0>;
    						linux,phandle = <0x32>;
    						phandle = <0x32>;
    					};
    
    					pinmux_uart2_pins {
    						pinctrl-single,pins = <0x150 0x31 0x154 0x1>;
    						linux,phandle = <0x33>;
    						phandle = <0x33>;
    					};
    
    					pinmux_uart5_pins {
    						pinctrl-single,pins = <0xc4 0x34 0xc0 0x4>;
    						linux,phandle = <0x97>;
    						phandle = <0x97>;
    					};
    
    					pinmux_clkout2_pin {
    						pinctrl-single,pins = <0x1b4 0x3>;
    						linux,phandle = <0x24>;
    						phandle = <0x24>;
    					};
    
    					cpsw_default {
    						pinctrl-single,pins = <0x110 0x30 0x114 0x0 0x118 0x30 0x11c 0x0 0x120 0x0 0x124 0x0 0x128 0x0 0x12c 0x30 0x130 0x30 0x134 0x30 0x138 0x30 0x13c 0x30 0x140 0x30>;
    						linux,phandle = <0x49>;
    						phandle = <0x49>;
    					};
    
    					cpsw_sleep {
    						pinctrl-single,pins = <0x110 0x27 0x114 0x27 0x118 0x27 0x11c 0x27 0x120 0x27 0x124 0x27 0x128 0x27 0x12c 0x27 0x130 0x27 0x134 0x27 0x138 0x27 0x13c 0x27 0x140 0x27>;
    						linux,phandle = <0x4a>;
    						phandle = <0x4a>;
    					};
    
    					davinci_mdio_default {
    						pinctrl-single,pins = <0x148 0x30 0x14c 0x10>;
    						linux,phandle = <0x4b>;
    						phandle = <0x4b>;
    					};
    
    					davinci_mdio_sleep {
    						pinctrl-single,pins = <0x148 0x27 0x14c 0x27>;
    						linux,phandle = <0x4c>;
    						phandle = <0x4c>;
    					};
    
    					pinmux_mmc1_pins {
    						pinctrl-single,pins = <0x160 0x2f>;
    						linux,phandle = <0x3a>;
    						phandle = <0x3a>;
    					};
    
    					pinmux_emmc_pins {
    						pinctrl-single,pins = <0x80 0x32 0x84 0x32 0x0 0x31 0x4 0x31 0x8 0x31 0xc 0x31 0x10 0x31 0x14 0x31 0x18 0x31 0x1c 0x31>;
    						linux,phandle = <0x3d>;
    						phandle = <0x3d>;
    					};
    
    					nxp_hdmi_bonelt_pins {
    						pinctrl-single,pins = <0x1b0 0x3 0xa0 0x8 0xa4 0x8 0xa8 0x8 0xac 0x8 0xb0 0x8 0xb4 0x8 0xb8 0x8 0xbc 0x8 0xc0 0x8 0xc4 0x8 0xc8 0x8 0xcc 0x8 0xd0 0x8 0xd4 0x8 0xd8 0x8 0xdc 0x8 0xe0 0x0 0xe4 0x0 0xe8 0x0 0xec 0x0>;
    						linux,phandle = <0x35>;
    						phandle = <0x35>;
    					};
    
    					nxp_hdmi_bonelt_off_pins {
    						pinctrl-single,pins = <0x1b0 0x3>;
    						linux,phandle = <0x36>;
    						phandle = <0x36>;
    					};
    
    					mcasp0_pins {
    						pinctrl-single,pins = <0x1ac 0x7 0x19c 0x2 0x194 0x10 0x190 0x0 0x6c 0x7>;
    						linux,phandle = <0x50>;
    						phandle = <0x50>;
    					};
    				};
    
    				scm_conf@0 {
    					compatible = "syscon";
    					reg = <0x0 0x800>;
    					#address-cells = <0x1>;
    					#size-cells = <0x1>;
    					linux,phandle = <0x3>;
    					phandle = <0x3>;
    
    					clocks {
    						#address-cells = <0x1>;
    						#size-cells = <0x0>;
    
    						sys_clkin_ck {
    							#clock-cells = <0x0>;
    							compatible = "ti,mux-clock";
    							clocks = <0x25 0x26 0x27 0x28>;
    							ti,bit-shift = <0x16>;
    							reg = <0x40>;
    							linux,phandle = <0x8>;
    							phandle = <0x8>;
    						};
    
    						adc_tsc_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						dcan0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    							linux,phandle = <0x3e>;
    							phandle = <0x3e>;
    						};
    
    						dcan1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    							linux,phandle = <0x3f>;
    							phandle = <0x3f>;
    						};
    
    						mcasp0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						mcasp1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						smartreflex0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						smartreflex1_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						sha0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						aes0_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						rng_fck {
    							#clock-cells = <0x0>;
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							clock-div = <0x1>;
    						};
    
    						ehrpwm0_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x29>;
    							ti,bit-shift = <0x0>;
    							reg = <0x664>;
    							linux,phandle = <0x44>;
    							phandle = <0x44>;
    						};
    
    						ehrpwm1_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x29>;
    							ti,bit-shift = <0x1>;
    							reg = <0x664>;
    							linux,phandle = <0x45>;
    							phandle = <0x45>;
    						};
    
    						ehrpwm2_tbclk@44e10664 {
    							#clock-cells = <0x0>;
    							compatible = "ti,gate-clock";
    							clocks = <0x29>;
    							ti,bit-shift = <0x2>;
    							reg = <0x664>;
    							linux,phandle = <0x46>;
    							phandle = <0x46>;
    						};
    					};
    				};
    
    				wkup_m3_ipc@1324 {
    					compatible = "ti,am3352-wkup-m3-ipc";
    					reg = <0x1324 0x24>;
    					interrupts = <0x4e>;
    					ti,rproc = <0x2a>;
    					mboxes = <0x2b 0x2c>;
    					ti,scale-data-fw = "am335x-bone-scale-data.bin";
    				};
    
    				dma-router@f90 {
    					compatible = "ti,am335x-edma-crossbar";
    					reg = <0xf90 0x40>;
    					#dma-cells = <0x3>;
    					dma-requests = <0x20>;
    					dma-masters = <0x2d>;
    					linux,phandle = <0x39>;
    					phandle = <0x39>;
    				};
    
    				clockdomains {
    				};
    			};
    		};
    
    		interrupt-controller@48200000 {
    			compatible = "ti,am33xx-intc";
    			interrupt-controller;
    			#interrupt-cells = <0x1>;
    			reg = <0x48200000 0x1000>;
    			linux,phandle = <0x1>;
    			phandle = <0x1>;
    		};
    
    		edma@49000000 {
    			compatible = "ti,edma3-tpcc";
    			ti,hwmods = "tpcc";
    			reg = <0x49000000 0x10000>;
    			reg-names = "edma3_cc";
    			interrupts = <0xc 0xd 0xe>;
    			interrupt-names = "edma3_ccint", "emda3_mperr", "edma3_ccerrint";
    			dma-requests = <0x40>;
    			#dma-cells = <0x2>;
    			ti,tptcs = <0x2e 0x7 0x2f 0x5 0x30 0x0>;
    			ti,edma-memcpy-channels = <0x14 0x15>;
    			linux,phandle = <0x2d>;
    			phandle = <0x2d>;
    		};
    
    		tptc@49800000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc0";
    			reg = <0x49800000 0x100000>;
    			interrupts = <0x70>;
    			interrupt-names = "edma3_tcerrint";
    			linux,phandle = <0x2e>;
    			phandle = <0x2e>;
    		};
    
    		tptc@49900000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc1";
    			reg = <0x49900000 0x100000>;
    			interrupts = <0x71>;
    			interrupt-names = "edma3_tcerrint";
    			linux,phandle = <0x2f>;
    			phandle = <0x2f>;
    		};
    
    		tptc@49a00000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc2";
    			reg = <0x49a00000 0x100000>;
    			interrupts = <0x72>;
    			interrupt-names = "edma3_tcerrint";
    			linux,phandle = <0x30>;
    			phandle = <0x30>;
    		};
    
    		emif@4c000000 {
    			compatible = "ti,emif-am3352";
    			reg = <0x4c000000 0x1000>;
    			sram = <0x7>;
    		};
    
    		gpio@44e07000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio1";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x44e07000 0x1000>;
    			interrupts = <0x60>;
    			linux,phandle = <0x3b>;
    			phandle = <0x3b>;
    		};
    
    		gpio@4804c000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio2";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x4804c000 0x1000>;
    			interrupts = <0x62>;
    			linux,phandle = <0x54>;
    			phandle = <0x54>;
    			#pinctrl-names = "default";
    			#pinctrl-0 = <0x92>;
    		};
    
    		gpio@481ac000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio3";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x481ac000 0x1000>;
    			interrupts = <0x20>;
    		};
    
    		gpio@481ae000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio4";
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			reg = <0x481ae000 0x1000>;
    			interrupts = <0x3e>;
    			linux,phandle = <0x55>;
    			phandle = <0x55>;
    		};
    
    		serial@44e09000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart1";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x44e09000 0x2000>;
    			interrupts = <0x48>;
    			status = "okay";
    			dmas = <0x2d 0x1a 0x0 0x2d 0x1b 0x0>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x31>;
    		};
    
    		serial@48022000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart2";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x48022000 0x2000>;
    			interrupts = <0x49>;
    			status = "okay";
    			dmas = <0x2d 0x1c 0x0 0x2d 0x1d 0x0>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x32>;
    		};
    
    		serial@48024000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart3";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x48024000 0x2000>;
    			interrupts = <0x4a>;
    			status = "okay";
    			dmas = <0x2d 0x1e 0x0 0x2d 0x1f 0x0>;
    			dma-names = "tx", "rx";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x33>;
    		};
    
    		serial@481a6000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart4";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481a6000 0x2000>;
    			interrupts = <0x2c>;
    			status = "okay";
    			pinctrl-names = "default";
    		};
    
    		serial@481a8000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart5";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481a8000 0x2000>;
    			interrupts = <0x2d>;
    			status = "okay";
    			pinctrl-names = "default";
    			#pinctrl-0 = <0x96>;
    		};
    
    		serial@481aa000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart6";
    			clock-frequency = <0x2dc6c00>;
    			reg = <0x481aa000 0x2000>;
    			interrupts = <0x2e>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x97>;
    		};
    
    		i2c@44e0b000 {
    			compatible = "ti,omap4-i2c";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			ti,hwmods = "i2c1";
    			reg = <0x44e0b000 0x1000>;
    			interrupts = <0x46>;
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x34>;
    			clock-frequency = <0x61a80>;
    
    			tps@24 {
    				reg = <0x24>;
    				compatible = "ti,tps65217";
    				ti,pmic-shutdown-controller;
    
    				regulators {
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    
    					regulator@0 {
    						reg = <0x0>;
    						regulator-compatible = "dcdc1";
    						regulator-name = "vdds_dpr";
    						regulator-always-on;
    					};
    
    					regulator@1 {
    						reg = <0x1>;
    						regulator-compatible = "dcdc2";
    						regulator-name = "vdd_mpu";
    						regulator-min-microvolt = <0xe1d48>;
    						regulator-max-microvolt = <0x149f4c>;
    						regulator-boot-on;
    						regulator-always-on;
    						linux,phandle = <0x6>;
    						phandle = <0x6>;
    					};
    
    					regulator@2 {
    						reg = <0x2>;
    						regulator-compatible = "dcdc3";
    						regulator-name = "vdd_core";
    						regulator-min-microvolt = <0xe1d48>;
    						regulator-max-microvolt = <0x118c30>;
    						regulator-boot-on;
    						regulator-always-on;
    					};
    
    					regulator@3 {
    						reg = <0x3>;
    						regulator-compatible = "ldo1";
    						regulator-name = "vio,vrtc,vdds";
    						regulator-always-on;
    					};
    
    					regulator@4 {
    						reg = <0x4>;
    						regulator-compatible = "ldo2";
    						regulator-name = "vdd_3v3aux";
    						regulator-always-on;
    					};
    
    					regulator@5 {
    						reg = <0x5>;
    						regulator-compatible = "ldo3";
    						regulator-name = "vdd_1v8";
    						regulator-always-on;
    						regulator-min-microvolt = <0x1b7740>;
    						regulator-max-microvolt = <0x1b7740>;
    					};
    
    					regulator@6 {
    						reg = <0x6>;
    						regulator-compatible = "ldo4";
    						regulator-name = "vdd_3v3a";
    						regulator-always-on;
    					};
    				};
    			};
    		};
    
    		i2c@4802a000 {
    			compatible = "ti,omap4-i2c";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			ti,hwmods = "i2c2";
    			reg = <0x4802a000 0x1000>;
    			interrupts = <0x47>;
    			#status = "disabled";
    			status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x95>;
    			clock-frequency = <0x186a0>;
    		};
    
    		mmc@48060000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc1";
    			ti,dual-volt;
    			ti,needs-special-reset;
    			ti,needs-special-hs-handling;
    			dmas = <0x39 0x18 0x0 0x0 0x39 0x19 0x0 0x0>;
    			dma-names = "tx", "rx";
    			interrupts = <0x40>;
    			interrupt-parent = <0x1>;
    			reg = <0x48060000 0x1000>;
    			status = "okay";
    			bus-width = <0x4>;
    			pinctrl-names = "default";
    			pinctrl-0 = <0x3a>;
    			cd-gpios = <0x3b 0x6 0x1>;
    			vmmc-supply = <0x3c>;
    		};
    
    		mmc@481d8000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc2";
    			ti,needs-special-reset;
    			dmas = <0x2d 0x2 0x0 0x2d 0x3 0x0>;
    			dma-names = "tx", "rx";
    			interrupts = <0x1c>;
    			interrupt-parent = <0x1>;
    			reg = <0x481d8000 0x1000>;
    			status = "okay";
    			vmmc-supply = <0x3c>;
    			pinctrl-names = "default";
    			pinctrl-0 = <0x3d>;
    			bus-width = <0x8>;
    		};
    
    		mmc@47810000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc3";
    			ti,needs-special-reset;
    			interrupts = <0x1d>;
    			interrupt-parent = <0x1>;
    			reg = <0x47810000 0x1000>;
    			status = "disabled";
    		};
    
    		spinlock@480ca000 {
    			compatible = "ti,omap4-hwspinlock";
    			reg = <0x480ca000 0x1000>;
    			ti,hwmods = "spinlock";
    			#hwlock-cells = <0x1>;
    		};
    
    		wdt@44e35000 {
    			compatible = "ti,omap3-wdt";
    			ti,hwmods = "wd_timer2";
    			reg = <0x44e35000 0x1000>;
    			interrupts = <0x5b>;
    		};
    
    		can@481cc000 {
    			compatible = "ti,am3352-d_can";
    			ti,hwmods = "d_can0";
    			reg = <0x481cc000 0x2000>;
    			clocks = <0x3e>;
    			clock-names = "fck";
    			syscon-raminit = <0x3 0x644 0x0>;
    			interrupts = <0x34>;
    			status = "disabled";
    		};
    
    		can@481d0000 {
    			compatible = "ti,am3352-d_can";
    			ti,hwmods = "d_can1";
    			reg = <0x481d0000 0x2000>;
    			clocks = <0x3f>;
    			clock-names = "fck";
    			syscon-raminit = <0x3 0x644 0x1>;
    			interrupts = <0x37>;
    			status = "disabled";
    		};
    
    		mailbox@480C8000 {
    			compatible = "ti,omap4-mailbox";
    			reg = <0x480c8000 0x200>;
    			interrupts = <0x4d>;
    			ti,hwmods = "mailbox";
    			#mbox-cells = <0x1>;
    			ti,mbox-num-users = <0x4>;
    			ti,mbox-num-fifos = <0x8>;
    			linux,phandle = <0x2b>;
    			phandle = <0x2b>;
    
    			wkup_m3 {
    				ti,mbox-send-noirq;
    				ti,mbox-tx = <0x0 0x0 0x0>;
    				ti,mbox-rx = <0x0 0x0 0x3>;
    				linux,phandle = <0x2c>;
    				phandle = <0x2c>;
    			};
    
    			mbox_pru0 {
    				ti,mbox-tx = <0x2 0x0 0x0>;
    				ti,mbox-rx = <0x3 0x0 0x0>;
    			};
    
    			mbox_pru1 {
    				ti,mbox-tx = <0x4 0x0 0x0>;
    				ti,mbox-rx = <0x5 0x0 0x0>;
    			};
    		};
    
    		timer@44e31000 {
    			compatible = "ti,am335x-timer-1ms";
    			reg = <0x44e31000 0x400>;
    			interrupts = <0x43>;
    			ti,hwmods = "timer1";
    			ti,timer-alwon;
    		};
    
    		timer@48040000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48040000 0x400>;
    			interrupts = <0x44>;
    			ti,hwmods = "timer2";
    		};
    
    		timer@48042000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48042000 0x400>;
    			interrupts = <0x45>;
    			ti,hwmods = "timer3";
    		};
    
    		timer@48044000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48044000 0x400>;
    			interrupts = <0x5c>;
    			ti,hwmods = "timer4";
    			ti,timer-pwm;
    		};
    
    		timer@48046000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48046000 0x400>;
    			interrupts = <0x5d>;
    			ti,hwmods = "timer5";
    			ti,timer-pwm;
    		};
    
    		timer@48048000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x48048000 0x400>;
    			interrupts = <0x5e>;
    			ti,hwmods = "timer6";
    			ti,timer-pwm;
    		};
    
    		timer@4804a000 {
    			compatible = "ti,am335x-timer";
    			reg = <0x4804a000 0x400>;
    			interrupts = <0x5f>;
    			ti,hwmods = "timer7";
    			ti,timer-pwm;
    		};
    
    		rtc@44e3e000 {
    			compatible = "ti,am3352-rtc", "ti,da830-rtc";
    			reg = <0x44e3e000 0x1000>;
    			interrupts = <0x4b 0x4c>;
    			ti,hwmods = "rtc";
    			clocks = <0x18 0x15>;
    			clock-names = "ext-clk", "int-clk";
    			system-power-controller;
    		};
    
    		spi@48030000 {
    			compatible = "ti,omap4-mcspi";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			reg = <0x48030000 0x400>;
    			interrupts = <0x41>;
    			ti,spi-num-cs = <0x2>;
    			ti,hwmods = "spi0";
    			dmas = <0x2d 0x10 0x0 0x2d 0x11 0x0 0x2d 0x12 0x0 0x2d 0x13 0x0>;
    			dma-names = "tx0", "rx0", "tx1", "rx1";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x90>;
    			status = "disabled";
    			#status = "okay";
    
    			spidev@0 {
    				spi-max-frequency = <0x16e3600>;
    				reg = <0x0>;
    				compatible = "linux,telit_spi";
    			};
    		};
    
    		spi@481a0000 {
    			compatible = "ti,omap4-mcspi";
    			#address-cells = <0x1>;
    			#size-cells = <0x0>;
    			reg = <0x481a0000 0x400>;
    			interrupts = <0x7d>;
    			ti,spi-num-cs = <0x2>;
    			ti,hwmods = "spi1";
    			dmas = <0x2d 0x2a 0x0 0x2d 0x2b 0x0 0x2d 0x2c 0x0 0x2d 0x2d 0x0>;
    			dma-names = "tx0", "rx0", "tx1", "rx1";
    			status = "disabled";
    			#status = "okay";
    			pinctrl-names = "default";
    			pinctrl-0 = <0x91>;
    
    			spidev@1 {
    				spi-max-frequency = <0x16e3600>;
    				reg = <0x0>;
    				compatible = "linux,spidev";
    			};
    		};
    
    		usb@47400000 {
    			compatible = "ti,am33xx-usb";
    			reg = <0x47400000 0x1000>;
    			ranges;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ti,hwmods = "usb_otg_hs";
    			status = "okay";
    
    			control@44e10620 {
    				compatible = "ti,am335x-usb-ctrl-module";
    				reg = <0x44e10620 0x10 0x44e10648 0x4>;
    				reg-names = "phy_ctrl", "wakeup";
    				status = "okay";
    				linux,phandle = <0x40>;
    				phandle = <0x40>;
    			};
    
    			usb-phy@47401300 {
    				compatible = "ti,am335x-usb-phy";
    				reg = <0x47401300 0x100>;
    				reg-names = "phy";
    				status = "okay";
    				ti,ctrl_mod = <0x40>;
    				linux,phandle = <0x41>;
    				phandle = <0x41>;
    			};
    
    			usb@47401000 {
    				compatible = "ti,musb-am33xx";
    				status = "okay";
    				reg = <0x47401400 0x400 0x47401000 0x200>;
    				reg-names = "mc", "control";
    				interrupts = <0x12>;
    				interrupt-names = "mc";
    				dr_mode = "host";
    				mentor,multipoint = <0x1>;
    				mentor,num-eps = <0x10>;
    				mentor,ram-bits = <0xc>;
    				mentor,power = <0x1f4>;
    				phys = <0x41>;
    				dmas = <0x42 0x0 0x0 0x42 0x1 0x0 0x42 0x2 0x0 0x42 0x3 0x0 0x42 0x4 0x0 0x42 0x5 0x0 0x42 0x6 0x0 0x42 0x7 0x0 0x42 0x8 0x0 0x42 0x9 0x0 0x42 0xa 0x0 0x42 0xb 0x0 0x42 0xc 0x0 0x42 0xd 0x0 0x42 0xe 0x0 0x42 0x0 0x1 0x42 0x1 0x1 0x42 0x2 0x1 0x42 0x3 0x1 0x42 0x4 0x1 0x42 0x5 0x1 0x42 0x6 0x1 0x42 0x7 0x1 0x42 0x8 0x1 0x42 0x9 0x1 0x42 0xa 0x1 0x42 0xb 0x1 0x42 0xc 0x1 0x42 0xd 0x1 0x42 0xe 0x1>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    			};
    
    			usb-phy@47401b00 {
    				compatible = "ti,am335x-usb-phy";
    				reg = <0x47401b00 0x100>;
    				reg-names = "phy";
    				status = "okay";
    				ti,ctrl_mod = <0x40>;
    				linux,phandle = <0x43>;
    				phandle = <0x43>;
    			};
    
    			usb@47401800 {
    				compatible = "ti,musb-am33xx";
    				status = "okay";
    				reg = <0x47401c00 0x400 0x47401800 0x200>;
    				reg-names = "mc", "control";
    				interrupts = <0x13>;
    				interrupt-names = "mc";
    				dr_mode = "host";
    				mentor,multipoint = <0x1>;
    				mentor,num-eps = <0x10>;
    				mentor,ram-bits = <0xc>;
    				mentor,power = <0x1f4>;
    				phys = <0x43>;
    				dmas = <0x42 0xf 0x0 0x42 0x10 0x0 0x42 0x11 0x0 0x42 0x12 0x0 0x42 0x13 0x0 0x42 0x14 0x0 0x42 0x15 0x0 0x42 0x16 0x0 0x42 0x17 0x0 0x42 0x18 0x0 0x42 0x19 0x0 0x42 0x1a 0x0 0x42 0x1b 0x0 0x42 0x1c 0x0 0x42 0x1d 0x0 0x42 0xf 0x1 0x42 0x10 0x1 0x42 0x11 0x1 0x42 0x12 0x1 0x42 0x13 0x1 0x42 0x14 0x1 0x42 0x15 0x1 0x42 0x16 0x1 0x42 0x17 0x1 0x42 0x18 0x1 0x42 0x19 0x1 0x42 0x1a 0x1 0x42 0x1b 0x1 0x42 0x1c 0x1 0x42 0x1d 0x1>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    			};
    
    			dma-controller@47402000 {
    				compatible = "ti,am3359-cppi41";
    				reg = <0x47400000 0x1000 0x47402000 0x1000 0x47403000 0x1000 0x47404000 0x4000>;
    				reg-names = "glue", "controller", "scheduler", "queuemgr";
    				interrupts = <0x11>;
    				interrupt-names = "glue";
    				#dma-cells = <0x2>;
    				#dma-channels = <0x1e>;
    				#dma-requests = <0x100>;
    				status = "okay";
    				linux,phandle = <0x42>;
    				phandle = <0x42>;
    			};
    		};
    
    		epwmss@48300000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48300000 0x10>;
    			ti,hwmods = "epwmss0";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48300100 0x48300100 0x80 0x48300180 0x48300180 0x80 0x48300200 0x48300200 0x80>;
    
    			ecap@48300100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48300100 0x80>;
    				clocks = <0x29>;
    				clock-names = "fck";
    				interrupts = <0x1f>;
    				interrupt-names = "ecap0";
    				status = "disabled";
    			};
    
    			pwm@48300200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48300200 0x80>;
    				clocks = <0x44 0x29>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    			};
    		};
    
    		epwmss@48302000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48302000 0x10>;
    			ti,hwmods = "epwmss1";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48302100 0x48302100 0x80 0x48302180 0x48302180 0x80 0x48302200 0x48302200 0x80>;
    
    			ecap@48302100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48302100 0x80>;
    				clocks = <0x29>;
    				clock-names = "fck";
    				interrupts = <0x2f>;
    				interrupt-names = "ecap1";
    				status = "disabled";
    			};
    
    			pwm@48302200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48302200 0x80>;
    				clocks = <0x45 0x29>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    			};
    		};
    
    		epwmss@48304000 {
    			compatible = "ti,am33xx-pwmss";
    			reg = <0x48304000 0x10>;
    			ti,hwmods = "epwmss2";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			status = "disabled";
    			ranges = <0x48304100 0x48304100 0x80 0x48304180 0x48304180 0x80 0x48304200 0x48304200 0x80>;
    
    			ecap@48304100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				#pwm-cells = <0x3>;
    				reg = <0x48304100 0x80>;
    				clocks = <0x29>;
    				clock-names = "fck";
    				interrupts = <0x3d>;
    				interrupt-names = "ecap2";
    				status = "disabled";
    			};
    
    			pwm@48304200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				#pwm-cells = <0x3>;
    				reg = <0x48304200 0x80>;
    				clocks = <0x46 0x29>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    			};
    		};
    
    		ethernet@4a100000 {
    			compatible = "ti,am335x-cpsw", "ti,cpsw";
    			ti,hwmods = "cpgmac0";
    			clocks = <0x47 0x48>;
    			clock-names = "fck", "cpts";
    			cpdma_channels = <0x8>;
    			ale_entries = <0x400>;
    			bd_ram_size = <0x2000>;
    			no_bd_ram = <0x0>;
    			mac_control = <0x20>;
    			slaves = <0x2>;
    			active_slave = <0x0>;
    			cpts_clock_mult = <0x80000000>;
    			cpts_clock_shift = <0x1d>;
    			reg = <0x4a100000 0x800 0x4a101200 0x100>;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x28 0x29 0x2a 0x2b>;
    			ranges;
    			syscon = <0x3>;
    			status = "okay";
    			pinctrl-names = "default", "sleep";
    			pinctrl-0 = <0x49>;
    			pinctrl-1 = <0x4a>;
    
    			mdio@4a101000 {
    				compatible = "ti,cpsw-mdio";
    				#address-cells = <0x1>;
    				#size-cells = <0x0>;
    				ti,hwmods = "davinci_mdio";
    				bus_freq = <0xf4240>;
    				reg = <0x4a101000 0x100>;
    				status = "okay";
    				pinctrl-names = "default", "sleep";
    				pinctrl-0 = <0x4b>;
    				pinctrl-1 = <0x4c>;
    				linux,phandle = <0x4d>;
    				phandle = <0x4d>;
    			};
    
    			slave@4a100200 {
    				mac-address = [00 00 00 00 00 00];
    				phy_id = <0x4d 0x0>;
    				phy-mode = "mii";
    			};
    
    			slave@4a100300 {
    				mac-address = [00 00 00 00 00 00];
    				phy_id = <0x4d 0x1>;
    				phy-mode = "mii";
    			};
    
    			cpsw-phy-sel@44e10650 {
    				compatible = "ti,am3352-cpsw-phy-sel";
    				reg = <0x44e10650 0x4>;
    				reg-names = "gmii-sel";
    			};
    		};
    
    		ocmcram@40300000 {
    			compatible = "mmio-sram";
    			reg = <0x40300000 0x2000>;
    			map-exec;
    			linux,phandle = <0x7>;
    			phandle = <0x7>;
    		};
    
    		ocmcram_nocache@40302000 {
    			compatible = "mmio-sram";
    			reg = <0x40302000 0xe000>;
    		};
    
    		pruss@4a300000 {
    			compatible = "ti,am3352-pruss";
    			ti,hwmods = "pruss";
    			reg = <0x4a300000 0x2000 0x4a302000 0x2000 0x4a310000 0x3000 0x4a326000 0x2000 0x4a32e000 0x31c 0x4a332000 0x58>;
    			reg-names = "dram0", "dram1", "shrdram2", "cfg", "iep", "mii_rt";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			ranges;
    
    			intc@4a320000 {
    				compatible = "ti,am3352-pruss-intc";
    				reg = <0x4a320000 0x2000>;
    				reg-names = "intc";
    				interrupts = <0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>;
    				interrupt-names = "host2", "host3", "host4", "host5", "host6", "host7", "host8", "host9";
    				interrupt-controller;
    				#interrupt-cells = <0x1>;
    				linux,phandle = <0x4e>;
    				phandle = <0x4e>;
    			};
    
    			pru0@4a334000 {
    				compatible = "ti,am3352-pru";
    				reg = <0x4a334000 0x2000 0x4a322000 0x400 0x4a322400 0x100>;
    				reg-names = "iram", "control", "debug";
    				interrupt-parent = <0x4e>;
    				interrupts = <0x10 0x11>;
    				interrupt-names = "vring", "kick";
    			};
    
    			pru1@4a338000 {
    				compatible = "ti,am3352-pru";
    				reg = <0x4a338000 0x2000 0x4a324000 0x400 0x4a324400 0x100>;
    				reg-names = "iram", "control", "debug";
    				interrupt-parent = <0x4e>;
    				interrupts = <0x12 0x13>;
    				interrupt-names = "vring", "kick";
    			};
    
    			mdio@4a332400 {
    				compatible = "ti,davinci_mdio";
    				reg = <0x4a332400 0x90>;
    				clocks = <0x12>;
    				clock-names = "fck";
    				bus_freq = <0xf4240>;
    				#address-cells = <0x1>;
    				#size-cells = <0x0>;
    				status = "disabled";
    			};
    		};
    
    		elm@48080000 {
    			compatible = "ti,am3352-elm";
    			reg = <0x48080000 0x2000>;
    			interrupts = <0x4>;
    			ti,hwmods = "elm";
    			status = "disabled";
    		};
    
    		lcdc@4830e000 {
    			compatible = "ti,am33xx-tilcdc";
    			reg = <0x4830e000 0x1000>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x24>;
    			ti,hwmods = "lcdc";
    			status = "okay";
    			blue-and-red-wiring = "straight";
    
    			port {
    
    				endpoint@0 {
    					remote-endpoint = <0x4f>;
    					linux,phandle = <0x37>;
    					phandle = <0x37>;
    				};
    			};
    		};
    
    		tscadc@44e0d000 {
    			compatible = "ti,am3359-tscadc";
    			reg = <0x44e0d000 0x1000>;
    			interrupt-parent = <0x1>;
    			interrupts = <0x10>;
    			ti,hwmods = "adc_tsc";
    			status = "okay";
    
    			tsc {
    				compatible = "ti,am3359-tsc";
    				ti,wires = <0x0>;
    				ti,coordinate-readouts = <0x5>;
    			};
    
    			adc {
    				#io-channel-cells = <0x1>;
    				compatible = "ti,am3359-adc";
    				ti,adc-channels = <0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7>;
    			};
    		};
    
    		gpmc@50000000 {
    			compatible = "ti,am3352-gpmc";
    			ti,hwmods = "gpmc";
    			ti,no-idle-on-init;
    			reg = <0x50000000 0x2000>;
    			interrupts = <0x64>;
    			dmas = <0x2d 0x34 0x0>;
    			dma-names = "rxtx";
    			gpmc,num-cs = <0x7>;
    			gpmc,num-waitpins = <0x2>;
    			#address-cells = <0x2>;
    			#size-cells = <0x1>;
    			interrupt-controller;
    			#interrupt-cells = <0x2>;
    			gpio-controller;
    			#gpio-cells = <0x2>;
    			status = "disabled";
    		};
    
    		sham@53100000 {
    			compatible = "ti,omap4-sham";
    			ti,hwmods = "sham";
    			reg = <0x53100000 0x200>;
    			interrupts = <0x6d>;
    			dmas = <0x2d 0x24 0x0>;
    			dma-names = "rx";
    			status = "okay";
    		};
    
    		aes@53500000 {
    			compatible = "ti,omap4-aes";
    			ti,hwmods = "aes";
    			reg = <0x53500000 0xa0>;
    			interrupts = <0x67>;
    			dmas = <0x2d 0x6 0x0 0x2d 0x5 0x0>;
    			dma-names = "tx", "rx";
    			status = "okay";
    		};
    
    		mcasp@48038000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			ti,hwmods = "mcasp0";
    			reg = <0x48038000 0x2000 0x46000000 0x400000>;
    			reg-names = "mpu", "dat";
    			interrupts = <0x50 0x51>;
    			interrupt-names = "tx", "rx";
    			status = "okay";
    			dmas = <0x2d 0x8 0x2 0x2d 0x9 0x2>;
    			dma-names = "tx", "rx";
    			#sound-dai-cells = <0x0>;
    			pinctrl-names = "default";
    			pinctrl-0 = <0x50>;
    			op-mode = <0x0>;
    			tdm-slots = <0x2>;
    			serial-dir = <0x0 0x0 0x1 0x0>;
    			tx-num-evt = <0x20>;
    			rx-num-evt = <0x20>;
    			linux,phandle = <0x58>;
    			phandle = <0x58>;
    		};
    
    		mcasp@4803C000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			ti,hwmods = "mcasp1";
    			reg = <0x4803c000 0x2000 0x46400000 0x400000>;
    			reg-names = "mpu", "dat";
    			interrupts = <0x52 0x53>;
    			interrupt-names = "tx", "rx";
    			status = "disabled";
    			dmas = <0x2d 0xa 0x2 0x2d 0xb 0x2>;
    			dma-names = "tx", "rx";
    		};
    
    		rng@48310000 {
    			compatible = "ti,omap4-rng";
    			ti,hwmods = "rng";
    			reg = <0x48310000 0x2000>;
    			interrupts = <0x6f>;
    		};
    
    		sgx@56000000 {
    			compatible = "ti,am3352-sgx530", "img,sgx530";
    			ti,hwmods = "gfx";
    			reg = <0x56000000 0x10000>;
    			interrupts = <0x25>;
    			clocks = <0x51>;
    			clock-names = "fclk";
    			status = "okay";
    		};
    	};
    
    	leds {
    		pinctrl-names = "default", "sleep";
    		pinctrl-0 = <0x52>;
    		pinctrl-1 = <0x53>;
    		compatible = "gpio-leds";
    
    		led@2 {
    			label = "JHU_LED1";
    			gpios = <0x54 0x15 0x0>;
    			linux,default-trigger = "cpu0";
    			default-state = "on";
    		};
    
    		led@4 {
    			label = "beaglebone:green:usr2";
    			gpios = <0x54 0x17 0x0>;
    			linux,default-trigger = "cpu0";
    			default-state = "off";
    		};
    
    		led@5 {
    			label = "beaglebone:green:usr3";
    			gpios = <0x54 0x18 0x0>;
    			linux,default-trigger = "mmc1";
    			default-state = "off";
    		};
    
    		led@6 {
    			label = "JHU_LED2";
    			gpios = <0x55 0x15 0x0>;
    			default-state = "on";
    		};
    
    		led@7 {
    			label = "GSM_POWER_EN";
    			gpios = <0x54 0x11 0x0>;
    			default-state = "on";
    		};
    	};
    
    	fixedregulator@0 {
    		compatible = "regulator-fixed";
    		regulator-name = "vmmcsd_fixed";
    		regulator-min-microvolt = <0x325aa0>;
    		regulator-max-microvolt = <0x325aa0>;
    		linux,phandle = <0x3c>;
    		phandle = <0x3c>;
    	};
    
    	clk_mcasp0_fixed {
    		#clock-cells = <0x0>;
    		compatible = "fixed-clock";
    		clock-frequency = <0x1770000>;
    		linux,phandle = <0x56>;
    		phandle = <0x56>;
    	};
    
    	clk_mcasp0 {
    		#clock-cells = <0x0>;
    		compatible = "gpio-gate-clock";
    		clocks = <0x56>;
    		enable-gpios = <0x54 0x1b 0x0>;
    		linux,phandle = <0x59>;
    		phandle = <0x59>;
    	};
    
    	sound {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "TI BeagleBone Black";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <0x57>;
    		simple-audio-card,frame-master = <0x57>;
    
    		simple-audio-card,cpu {
    			sound-dai = <0x58>;
    			clocks = <0x59>;
    			linux,phandle = <0x57>;
    			phandle = <0x57>;
    		};
    
    		simple-audio-card,codec {
    			sound-dai = <0x5a>;
    		};
    	};
    };
    
    Hi Bin,

    Thanks for your reply.

    Yes,  I am trying to capture one good frame that has all jpeg markers from stream and save it as image.

    I understand the limitations of bulk read for AM335X. I am trying to improve my application performance so that it works good for frames below 800KB.

    I check CPPI enable options in kernel config, the both options are enable but still I don't find any dmesg logs regarding CPPI. I have enable FTRACE.

    For reference, I have attached desg snippet, config file and FRAMEGRABBER.c(image capture application) code.

    Best Regards,

    Vikas

  • Vikas,

    Normally the musb cppi driver doesn't print any message to the kernel log. But if you have kernel ftrace enabled, you can see cppi activities in ftrace log.

    First enable cppi tracepoints:

    root@am335x-evm:~# cd /sys/kernel/debug/tracing/events/musb/
    root@am335x-evm:musb# for f in musb_cppi41_*; do echo 1 > $f/enable; done

    Then see the cppi messages in ftrace log:

    root@am335x-evm:musb# cat ../../trace_pipe

    Or you can check for the cppi interrupts:

    root@am335x-evm:~# grep 47400000.dma-controller /proc/interrupts

  • root@am335x-evm:/# cd /sys/kernel/debug/tracing/events/
    asoc/                    filemap/                 napi/                    regmap/                  test/
    benchmark/               ftrace/                  net/                     regulator/               thermal/
    block/                   gpio/                    nfs/                     rpm/                     thermal_power_allocator/
    clk/                     header_event             nfs4/                    sched/                   timer/
    cma/                     header_page              oom/                     signal/                  udp/
    compaction/              i2c/                     pagemap/                 skb/                     v4l2/
    drm/                     iommu/                   power/                   sock/                    vb2/
    enable                   irq/                     printk/                  spi/                     vmscan/
    ext4/                    jbd2/                    random/                  sunrpc/                  workqueue/
    fence/                   kmem/                    ras/                     swiotlb/                 writeback/
    fib/                     migrate/                 raw_syscalls/            syscalls/                
    filelock/                module/                  rcu/                     task/
    
    root@am335x-evm:/# zcat /proc/config.gz | grep -i "FTRACE"                                                                                     
    CONFIG_HAVE_DYNAMIC_FTRACE=y
    CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
    CONFIG_FTRACE=y
    CONFIG_FTRACE_SYSCALLS=y
    CONFIG_DYNAMIC_FTRACE=y
    CONFIG_FTRACE_MCOUNT_RECORD=y
    CONFIG_FTRACE_SELFTEST=y
    CONFIG_FTRACE_STARTUP_TEST=y
    root@am335x-evm:/# 
    
    
    Thanks Bin,

    After enabling FTRACE, I checked but found no musb under "/sys/kernel/debug/tracing/events".  

    I have attached menuconfig snapshot, FTRACE enabled options.

    One more query,  since my requirement is to connect only one camera on each USB ports and start streaming in sequential manner, one after another camera. There is no hub.  So, why not BBB USBs' can be configured to use full bandwidth of USB2.0(60MB/sec) in Bulk transfer mode.

    Best Regards,

    Vikas

  • Vikas,

    Vikas Dubey said:
    After enabling FTRACE, I checked but found no musb under "/sys/kernel/debug/tracing/events".

    Which kernel version do you use? Older kernel doesn't support this feature.

  • Hi Bin,

    root@am335x-evm:~# cat /etc/os-release

    ID="arago"

    NAME="Arago"

    VERSION="2016.12"

    VERSION_ID="2016.12"

    PRETTY_NAME="Arago 2016.12"

    root@am335x-evm:~# uname -a

    Linux am335x-evm 4.4.41-gf9f6f0db2d #4 PREEMPT Wed Apr 10 01:05:30 IST 2019 armv7l GNU/Linux

    I was able to get trace of functions of musb, usbcore and uvc , using /sys/kernel/debug/tracing/set_trace. I think this process will help in getting events also.

    I come across TI query which tried to improve performance under bulk transfer. Please suggest your comments.

    Best regards,

    Vikas

  • Hi Vikas,

    The musb cppi tracepoint supported was added since kernel v4.8, so v4.4.41 doesn't have this feature.

    Currently only CPPI Transparent mode is used for bulk RX transfers, which is not optimal for some of bulk transfers. CPPI Generic RNDIS mode could be used for some bulk transfers to improve the throughput, but there is no plan yet to implement CPPI Generic RNDIS mode support.
  • Hi Bin,

    Thanks for your support.

    I check that there is maximum of 5 URBs requested by UVC driver for data transfer to UVC from low level drivers.  I increased this value but no significant improvement. Is there no way to allow parellel storage of URBs when UVC or higher modules are still doing other processing not processing URVs and releaving them for further data capture?

    Best regards,

    Vikas

  • Vikas,

    Increasing URBs would not help in this case, because the bottleneck is not here. Based on what I understand in the current kernel implementation, there are two things which could improve the performance.

    1. The URB process in the USB stack in kernel is serialized. The URB is requested by the UVC driver, then URB is programmed in the USB controller. Once a USB data packet is received for the URB, the URB is given back to the UVC driver. The problem in this process is that the URB givenback takes very long time (several ms, I don't have the exact number now) because the UVC v4l2 routine has to process the UVC/video headers, and a kernel spinlock is hold at this process, which causes interrupt is disabled and musb driver is unable to re-program the next URB to the usb controller. So basically the USB controller does nothing during the UVC driver is processing the current finished URB.

    2. The 2nd one is the CPPI transparent mode vs Generic RNDIS mode I mentioned above, CPPI G-RNDIS mode would benefit bulk transfer. But since your camera uses bulk transfer instead of isoch (which is typically used in usb webcams), supporting CPPI G-RNDIS mode would also benefit your use case too.

    The issue here is that none of the two is easy to resolve or implement.