dma_transfer_in_progress boolean variable has been added for tracking of dma2d current state (transferring/idle). The variable is set after dma2d successful transfer start and cleared inside the dma2d_wait() function after the dma2d transfer has finished.
dma2d_wait() function has been refactored from HAL based busy waiting variant to a priodical polling of dma2d status flags (TC, TE, CE) and sleep/wake concept using the dma2d to wake MCU when such event occurs.
WFE (Wait For Event) instruction is used for MCU sleep entry. The "SCB.SCR.SEVONPEND" bit is used to enable MCU wake-up with NVIC disabled IRQs.
[no changelog]
Removing the "KERNEL_MODE" guards as the whole file is guarded. Removing the dma2d_wait() function call as it's called twice in the near location.
[no changelog]
In order to lower the power consumption in standard operation mode, the goal is to regulate the display refresh rate based on the current needs (animations - 60Hz, static images - 30 Hz).
- Introduction of the on-the-fly refresh rate change functionality (interrupt based).
Configuration optimizations' investigations:
- Since the display visible dimensions are 520x380 and the display controller doesn't support this resolution directly, the closest variant 520x480 is used with 50px offset. Changing the resolution used to 520x430 and shortening the HACT region by 50px effectivly increasing the blanking period.
- Using RGB565 DSI color format, changing pixel clock to 15.5 MHz, changing HFP to 20 to maintain the 60 Hz refresh rate for the new pixel clock.
- DSI lane byte clock vs LTDC pixel clock ratio (max, min) tests.
- Etc. - different configuration profiles have been tested and TS7 input power consumption measured.
Formalizing the code to official one:
- adding preprocessor definitions to panels' configuration header files
- adding ifdefs to display_driver and display_fb source files to integrate the refresh rate scaling code based on panel's used
- the refresh rate change is to be performed to high one as soon as new image is to be shown, and to the low one after a timeout expires
[no changelog]
The arguments' passed to the HAL_DSI_LongWrite() function calls were corrected. Since the code is used in "KERNEL_MODE" => adding the respective preprocessor directives.
[no changelog]
A bug in pwm_data[] buffer clear check has been found and fixed. The pwm_data[][1] array element is used when the respective buffer is used for setting of new pulses' value to TPS61062 IC.
[no changelog]
Major rework of the haptic driver to improve the haptic feedback of the T3W1 click
- Rename driver from `drv2625` to `drv262x`, since we use it to control compatible models drv2624 and drv2625
- Fix driver configuration to properly configure close loop and open loop operation. T3W1 driver was configured to work in close_loop mode.
- Add waveform playbacks on drv2624 + new button click haptic effect
- Update actuator configuration files with more control parameters.
- Add error handling and tidy up the driver API comments.
- Removed `haptic_test` function since it could be directly replaced with `haptic_play_custom`
[no changelog]
The alternative way of FW version readout uses the MCUboot SMP serial recovery feature which had already been enabled and used for nRF FW update in the field mainly. The version is returned as a structure of 4 uint fields representing major, minor, revision and build_num respectively (string received from nRF IC is decoded).
The development releases of nRF FW are to be built with: "./scripts/build_sign_flash.sh -b t3w1_revA_nrf52832/nrf52832 -c -d -s -f" command. '-d' is essential, with '-p' the build script generates and signs the image in a way that MCUboot can't verify that (it uses debug keys see hash_signer.py but the MCUboot expects the production key which has embedded inside "image_validate.c" file).
[no changelog]
Constants' re-calculation so that the physical brightness remains static between the old and new approach. It should minimize the effect of the new approach for user, tests at production line, etc.
[no changelog]
Having re-considered that, the gamma correction function shall stay in the backlight driver's level. Although, not the GAMMA EXPONENT. The exponent is to be passed as an argument to backlight_init() function either to be used/not_used further on. This exponent shall be defined for different displays separately in their respective header files.
[no changelog]
First PoC implemented at TS7, specifically for tps61062 boost LED driver IC. Next step will be to make it general i.e. to move the correction to display driver SW level rather than backlight's one.
[no changelog]