From: "hardycheng(鄭易昕)" <hardycheng@msi.com>
To: 'Ricardo Ribalda' <ribalda@chromium.org>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: RE: UVCIOC_CTRL_MAP not work
Date: Fri, 28 Apr 2023 08:38:27 +0000 [thread overview]
Message-ID: <25bb11b5e14a49718d97156c614c90e1@msi.com> (raw)
In-Reply-To: <CANiDSCuG+0w=8hRrcG-UPWhBJLL+As0j+KseShDrB=Dca9JXhw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5870 bytes --]
Hi Ricardo,
So I modify the `uvc_xu_control_mapping` struct as follows:
(full code reference attachment `uvc_xu_v4l_mapping_demo.c`)
struct uvc_xu_control_mapping mapping = {
.id = 0x01,
.name = "My Extension Unit",
.entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
.selector = 0x01,
.size = 32,
.offset = 0,
.v4l2_type = V4L2_CTRL_TYPE_INTEGER,
.data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
.menu_info = NULL,
.menu_count = 0,
.reserved = {0},
};
And I got difference error message `UVCIOC_CTRL_MAP: No such file or directory`
Please check attachment `strace_20230428_2.log` for strace output
Best Regards,
Hardy
-----Original Message-----
From: Ricardo Ribalda <ribalda@chromium.org>
Sent: Friday, April 28, 2023 4:26 PM
To: hardycheng(鄭易昕) <hardycheng@msi.com>
Cc: linux-media@vger.kernel.org
Subject: Re: UVCIOC_CTRL_MAP not work
Hi Hardy
Seems like you can only add mappings for V4L2_CTRL_TYPE_INTEGER, V4L2_CTRL_TYPE_BOOLEAN:V4L2_CTRL_TYPE_BUTTON and V4L2_CTRL_TYPE_MENU.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/usb/uvc/uvc_v4l2.c#n130
You are trying to add a map for a V4L2_CTRL_TYPE_STRING
Regards
On Fri, 28 Apr 2023 at 10:20, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
>
> Hi Ricardo,
>
> Thanks for reply,
>
> I replace `_IOWR('u', 0x20, struct uvc_xu_control_mapping)` to `
> UVCIOC_CTRL_MAP` and got the same error, Please check attachment for
> command output `strace -f ./uvc_xu_v4l_mapping_demo`
>
> Best Regards,
> Hardy
>
> -----Original Message-----
> From: Ricardo Ribalda <ribalda@chromium.org>
> Sent: Friday, April 28, 2023 4:04 PM
> To: hardycheng(鄭易昕) <hardycheng@msi.com>
> Cc: linux-media@vger.kernel.org
> Subject: Re: UVCIOC_CTRL_MAP not work
>
> Hi Hardy
>
> Why are you using:
>
> result = ioctl(fd, _IOWR('u', 0x20, struct uvc_xu_control_mapping),
> &mapping);
>
> instead of
>
> result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
>
> Can you return the output of:
>
> strace -f uvc_xu_v4l_mapping_demo
>
> Thanks!
>
> On Fri, 28 Apr 2023 at 09:15, hardycheng(鄭易昕) <hardycheng@msi.com> wrote:
> >
> > Hi,
> >
> > # Environment:
> >
> > OS = Ubuntu 22.04 LTS (Linux version 5.19.0-41-generic) Program
> > Language = C Language
> >
> > # Overview:
> >
> > We plug in our UVC camera to PC, and try to use `UVCIOC_CTRL_MAP`
> > function on PC to create the v4l2 control mapping, but we got error
> > `UVCIOC_CTRL_MAP: Inappropriate ioctl for device` Development with
> > `C language` in `Ubuntu 22.04 LTS`
> >
> > # Description:
> >
> > We have a custom UVC camera and we can modify the extension unit(XU)
> > by ourself. (USB descriptions reference attachments
> > `uvc_xu_descriptor.PNG` & `usb_decriptions.txt`)
> >
> > We make sure that UVCIOC_CTRL_QUERY is work to control our XU item
> > (demo code in attachment `uvc_xu_ioctl_demo.c`)
> >
> > but UVCIOC_CTRL_MAP function fail with error message `UVCIOC_CTRL_MAP:
> > Inappropriate ioctl for device` (demo code in attachment
> > `uvc_xu_v4l_mapping_demo.c`)
> >
> > # Problems:
> >
> > 1. Is UVCIOC_CTRL_MAP function using in the PC host?
> > 2. Can you found any syntax problem in our demo code `uvc_xu_v4l_mapping_demo.c`?
> > 3. Is there any sample code about struct `uvc_xu_control_mapping` using?
> >
> > Looking forward to your reply,
> > Best Regards,
> > Hardy#2374
> >
> > *****CONFIDENTIAL INFORMATION*****
> >
> > This email is intended only for the use of the person or entity to
> > whom it is addressed and contains information that may be subject to
> > and/or may be restricted from disclosure by contract or applicable
> > law. If you are not the intended recipient of this email, be advised
> > that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> > If you are not the intended recipient of this email, please notify
> > the sender that you have received this in error by replying to this
> > message. Then, please delete it from your system. Our Privacy Policy
> > is available here https://www.msi.com/page/privacy-policy. Thank you.
>
>
>
> --
> Ricardo Ribalda
>
>
> *****CONFIDENTIAL INFORMATION*****
>
> This email is intended only for the use of the person or entity to
> whom it is addressed and contains information that may be subject to
> and/or may be restricted from disclosure by contract or applicable
> law. If you are not the intended recipient of this email, be advised
> that any disclosure, copy, distribution or use of the contents of this message is strictly prohibited.
> If you are not the intended recipient of this email, please notify the
> sender that you have received this in error by replying to this
> message. Then, please delete it from your system. Our Privacy Policy
> is available here https://www.msi.com/page/privacy-policy. Thank you.
--
Ricardo Ribalda
*****CONFIDENTIAL INFORMATION*****
This email is intended only for the use of the person or entity to whom it is
addressed and contains information that may be subject to and/or may be
restricted from disclosure by contract or applicable law. If you are not the
intended recipient of this email, be advised that any disclosure, copy,
distribution or use of the contents of this message is strictly prohibited.
If you are not the intended recipient of this email, please notify the sender
that you have received this in error by replying to this message. Then,
please delete it from your system. Our Privacy Policy is available here
https://www.msi.com/page/privacy-policy. Thank you.
[-- Attachment #2: uvc_xu_v4l_mapping_demo.c --]
[-- Type: text/plain, Size: 1020 bytes --]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/usb/video.h>
#include <linux/uvcvideo.h>
#include <linux/videodev2.h>
int main(){
int result;
int fd = open("/dev/video0", O_RDWR);
if(fd < 0) {
perror("File Open Fail");
goto close;
}
struct uvc_xu_control_mapping mapping = {
.id = 0x01,
.name = "My Extension Unit",
.entity = {0x10, 0xbc, 0x46, 0xba, 0x28, 0x5a, 0x4d, 0x7b, 0x97, 0x0e, 0xfd, 0x91, 0x46, 0xa5, 0x2f, 0x2d},
.selector = 0x01,
.size = 32,
.offset = 0,
.v4l2_type = V4L2_CTRL_TYPE_INTEGER,
.data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
.menu_info = NULL,
.menu_count = 0,
.reserved = {0},
};
result = ioctl(fd, UVCIOC_CTRL_MAP, &mapping);
if (result != 0) {
perror("UVCIOC_CTRL_MAP");
goto close;
}
close:
close(fd);
return 0;
}
[-- Attachment #3: strace_20230428_2.log --]
[-- Type: application/octet-stream, Size: 3280 bytes --]
root@ubuntu22:/ms5548_test# strace -f ./uvc_xu_v4l_mapping_demo
execve("./uvc_xu_v4l_mapping_demo", ["./uvc_xu_v4l_mapping_demo"], 0x7fff918670d8 /* 76 vars */) = 0
brk(NULL) = 0x55a9e3bd7000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffdcb619c10) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2dffcff000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=65987, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 65987, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2dffcee000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0i8\235HZ\227\223\333\350s\360\352,\223\340."..., 68, 896) = 68
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2216304, ...}, AT_EMPTY_PATH) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2dffa00000
mmap(0x7f2dffa28000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f2dffa28000
mmap(0x7f2dffbbd000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7f2dffbbd000
mmap(0x7f2dffc15000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x214000) = 0x7f2dffc15000
mmap(0x7f2dffc1b000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2dffc1b000
close(3) = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2dffceb000
arch_prctl(ARCH_SET_FS, 0x7f2dffceb740) = 0
set_tid_address(0x7f2dffceba10) = 6662
set_robust_list(0x7f2dffceba20, 24) = 0
rseq(0x7f2dffcec0e0, 0x20, 0, 0x53053053) = 0
mprotect(0x7f2dffc15000, 16384, PROT_READ) = 0
mprotect(0x55a9e30a1000, 4096, PROT_READ) = 0
mprotect(0x7f2dffd39000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f2dffcee000, 65987) = 0
openat(AT_FDCWD, "/dev/video0", O_RDWR) = 3
ioctl(3, UVCIOC_CTRL_MAP, 0x7ffdcb619c50) = -1 ENOENT (No such file or directory)
dup(2) = 4
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
getrandom("\xab\x1f\x34\x15\xb8\x09\x28\x79", 8, GRND_NONBLOCK) = 8
brk(NULL) = 0x55a9e3bd7000
brk(0x55a9e3bf8000) = 0x55a9e3bf8000
newfstatat(4, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}, AT_EMPTY_PATH) = 0
write(4, "UVCIOC_CTRL_MAP: No such file or"..., 43UVCIOC_CTRL_MAP: No such file or directory
) = 43
close(4) = 0
close(3) = 0
exit_group(0) = ?
+++ exited with 0 +++
next prev parent reply other threads:[~2023-04-28 8:38 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-28 7:04 UVCIOC_CTRL_MAP not work hardycheng(鄭易昕)
2023-04-28 8:04 ` Ricardo Ribalda
2023-04-28 8:20 ` hardycheng(鄭易昕)
2023-04-28 8:25 ` Ricardo Ribalda
2023-04-28 8:38 ` hardycheng(鄭易昕) [this message]
2023-04-28 8:44 ` Ricardo Ribalda
2023-04-28 8:50 ` hardycheng(鄭易昕)
2023-04-28 8:57 ` Ricardo Ribalda
2023-04-28 9:10 ` hardycheng(鄭易昕)
[not found] ` <72f03a2b961f462f89fe592d684121d8@msi.com>
2023-04-28 12:06 ` hardycheng(鄭易昕)
2023-04-28 12:11 ` Ricardo Ribalda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=25bb11b5e14a49718d97156c614c90e1@msi.com \
--to=hardycheng@msi.com \
--cc=linux-media@vger.kernel.org \
--cc=ribalda@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox