Yes, using some IOCTL similar to Linux is a good idea. BR,
Alan On 5/23/23, Maciej Wójcik <w8j...@gmail.com> wrote: > Maybe additional IOCTL in touch display drivers, for example here > https://github.com/apache/nuttx/blob/master/drivers/input/ads7843e.c#L943 > > Two calls, one accepting calibration matrix, and another to remove it and > come back to raw readings. > > In typical Linux there is an `xinput` command to do it > https://wiki.archlinux.org/title/Calibrating_Touchscreen#Apply_the_Matrix. > > Am Di., 23. Mai 2023 um 20:37 Uhr schrieb Alan C. Assis > <acas...@gmail.com>: > >> The LVGL 7.x that was integrated on NuttX had a calibration before >> initialize the demo, I think it was from LVGL itself. >> >> There is also TS calibration that Greg created for TWM4NX: >> apps/graphics/twm4nx/apps/ccalibration.cxx >> >> BR, >> >> Alan >> >> On 5/23/23, Maciej Wójcik <w8j...@gmail.com> wrote: >> > It would be great if NuttX would offer calibration of touch screens out >> of >> > the box. >> > >> > I am not sure where it should go, but I think it could be a wrapper >> > that >> is >> > used by many drivers. >> > >> > I think we have a similar situation with flash filesystems. There are >> > multiple layers that stack on each other. >> > >> > For example here there is `ftl_initialize` (flash translation layer) >> > and >> > then `smart_initialize` (filesystem) >> > >> https://github.com/apache/nuttx/blob/master/boards/arm/stm32/stm32f103-minimum/src/stm32_w25.c#L266 >> > >> > Regarding the calibration itself, you probably know how to implement >> > it, >> > but otherwise you might find this useful >> > https://gitlab.com/nxtlabs/shared-libs/touch-calib-lib/-/wikis/home >> > (explanation and implementation) >> > >> > Coming back to your question, how do other people do it? For me it was >> just >> > user-space code, part of the application. >> > >> > Am Di., 23. Mai 2023 um 20:12 Uhr schrieb Tim Hardisty >> > <t...@hardisty.co.uk>: >> > >> >> Hi, >> >> >> >> This is perhaps more a POSIX/general programming question than NuttX >> >> but >> >> you are all, so often, so very helpful :) >> >> >> >> A touchscreen peripheral (SAMA5D2 as it happens) delivers X and Y >> >> coordinates scaled 0-4095. >> >> >> >> LVGL wants them scaled to the actual size of the display (800x480 in >> >> my >> >> case). >> >> >> >> I'm not 100% sure that the chip’s TSD driver is the place to scale it? >> >> >> >> The TSD driver creates a generic /dev/input0 character driver, which >> >> is >> >> what LVGL (set via Kconfig) opens. Scaling within the LVGL code isn’t >> >> right >> >> either, I don’t think? >> >> >> >> I can only think of either: >> >> >> >> 1) creating a new character driver that does a translation – >> >> registered >> >> as >> >> /dev/input1 (or whatever) that LVGL uses, and this driver reads input0 >> >> when >> >> required and returns translated values. >> >> >> >> 2) Enhance the chip's TSD driver after all, using a Kconfig setting to >> >> enable X/Y scaling to the display's size (set in board-specific files >> >> already). >> >> >> >> Both seem a little messy though so perhaps I’m missing something >> obvious? >> >> Can't be the first to need to do this? >> >> >> >> Thanks, >> >> >> >> TimH >> >> >> >> >> > >> >