Yes, I like the idea of an IOCTL to do this.
>-----Original Message-----
>From: Maciej Wójcik <w8j...@gmail.com>
>Sent: Tuesday, May 23, 2023 7:39 PM
>To: dev@nuttx.apache.org
>Subject: Re: Touchscreen scaling/LVGL
>
>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
>> >>
>> >>
>> >
>>