Hi Patrice, Alain, Could you help to take a look at this patchset, thanks. This series is the rebase to the newest kernel commit: 88b06399c9c766c283e070b022b5ceafa4f63f19 according to the request from: https://lore.kernel.org/lkml/ff2bc09d-1a17-50d4-d3ee-16fd3a86d7f1@xxxxxxxxxxx/ The clk bug affects the kernel bootup on stm32f469-disco board in case display config(CONFIG_DRM_STM, CONFIG_DRM_STM_DSI, DRM_PANEL_ORISETECH_OTM8009A) enabled. If you want to test clk patch on stm32f429-disco board, the panel-ilitek-ili9341.c can be used for that purpose (CONFIG_DRM_STM, DRM_PANEL_ILITEK_ILI9341) i2c driver patch intent to fix the touch panel driver get data through i2c bus timeout issue. Best regards. Dillon On Fri, May 14, 2021 at 7:02 PM <dillon.minfei@xxxxxxxxx> wrote: > > From: Dillon Min <dillon.minfei@xxxxxxxxx> > > This seriese fix three i2c/clk bug for stm32 f4/f7 > - kernel runing in sdram, i2c driver get data timeout > - ltdc clk turn off after kernel console active > - kernel hang in set ltdc clock rate > > clk bug found on stm32f429/f469-disco board > > Hi Patrice: > below is the guide to verify the patch: > > setup test env with following files(link at below 'files link'): > [1] u-boot-dtb.bin > [2] rootfs zip file (used in kernel initramfs) > [3] u-boot's mkimage to create itb file > [4] kernel config file > [5] my itb with-or-without i2c patch > > This patch based on kernel commit: > 88b06399c9c766c283e070b022b5ceafa4f63f19 > > Note: > panel-ilitek-ili9341.c is the driver which was submitted last year, but not > get accepted. it's used to setup touch screen calibration, then test i2c. > > create itb file(please correct path of 'data'): > ./mkimage -f stm32.its stm32.itb > > HW setup: > console: > PA9, PA10 > usart0 > serial@40011000 > 115200 8n1 > > -- flash u-boot.bin to stm32f429-disco on PC > $ sudo openocd -f board/stm32f429discovery.cfg -c \ > '{PATH-TO-YOUR-UBOOT}/u-boot-dtb.bin 0x08000000 exit reset' > > -- setup kernel load bootargs at u-boot > U-Boot > setenv bootargs 'console=tty0 console=ttySTM0,115200 > root=/dev/ram rdinit=/linuxrc loglevel=8 fbcon=rotate:2' > U-Boot > loady;bootm > (download stm32.dtb or your kernel with itb format, or download zImage, dtb) > > -- setup ts_calibrate running env on stm32f429-disco > / # export TSLIB_CONFFILE=/etc/ts.conf > / # export TSLIB_TSDEVICE=/dev/input/event0 > / # export TSLIB_CONSOLEDEVICE=none > / # export TSLIB_FBDEVICE=/dev/fb0 > > -- clear screen > / # ./fb > > -- run ts_calibrate > / # ts_calibrate > (you can calibrate touchscreen now, and get below errors) > > [ 113.942087] stmpe-i2c0-0041: failed to read regs 0x52: -110 > [ 114.063598] stmpe-i2c 0-0041: failed to read reg 0x4b: -16 > [ 114.185629] stmpe-i2c 0-0041: failed to read reg 0x40: -16 > [ 114.307257] stmpe-i2c 0-0041: failed to write reg 0xb: -16 > > ... > with i2c patch applied, you will find below logs: > > RAW---------------------> 3164 908 183 118.110884 > TS_READ_RAW----> x = 3164, y =908, pressure = 183 > RAW---------------------> 3166 922 126 118.138946 > TS_READ_RAW----> x = 3166, y = 922, pressure = 126 > .... > > files link: > https://drive.google.com/drive/folders/1qNbjChcB6UGtKzne2F5x9_WG_sZFyo3o?usp=sharing > > > > > Dillon Min (4): > drm/panel: Add ilitek ili9341 panel driver > i2c: stm32f4: Fix stmpe811 get xyz data timeout issue > clk: stm32: Fix stm32f429's ltdc driver hang in set clock rate > clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after > kernel startup > > drivers/clk/clk-stm32f4.c | 10 +- > drivers/gpu/drm/panel/Kconfig | 12 + > drivers/gpu/drm/panel/Makefile | 1 + > drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 1285 ++++++++++++++++++++++++++ > drivers/i2c/busses/i2c-stm32f4.c | 12 +- > 5 files changed, 1310 insertions(+), 10 deletions(-) > create mode 100755 drivers/gpu/drm/panel/panel-ilitek-ili9341.c > > -- > 2.7.4 >