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 > >