On Thu, Apr 15, 2021 at 04:35:45PM +0100, mark@bolhuis.dev wrote:
Hi all
My name is Mark and I'm currently writing a device driver for Eizo EV FlexScan monitors, so that I can control them over usb. This driver is built by reverse engineering the hid reports sent by the propriety and windows only software. It can be found here: https://github.com/markbolhuis/openeizo
I have some questions about this that hopefully somebody can answer.
1) What would be the recommended way to interface this with userspace? My plan is to expose a device file for each unique setting that the monitor has such as brightness control, input selection and so on... However I'm not sure this is a suitable way of doing this since the monitors have many options that are very similar. For example contiguous numerical values only differ by their usage and value min and max, meaning that if I have a file per setting there will be a lot of repetition. There are already 40+ unique attributes/settings that may need a file.
Why do you need a kernel driver at all? Why not just use the userspace hid access and control stuff that way from an application?
2) To properly initialize the driver I will have to fetch a second report descriptor from the monitor. This isn't a standard hid report descriptor. It seems that Eizo are simply using the format instead of inventing their own. Is there a way for the hid subsystem to parse arbitrary report descriptors and expose them as a structure for generic use? I couldn't find much that would help with this. hid_parse_report @ inlcude/linux/hid.h:895 seems to be the closest to what I need but it's tied to a device.
If you write your own driver, you can do that from within the driver I think. But again, what's wrong with userspace? thanks, greg k-h