Загрузка данных


Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: fpga_csi_bridge 2-0040: Loading FPGA bitstream file: LED_impl_1_clean_reverse.bin ...
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: fpga_manager fpga0: writing LED_impl_1_clean_reverse.bin to Lattice sysCONFIG FPGA Manager
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_init(400)
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_gpio_refresh(122) SET PROGRAMN to 0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=2 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=2 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_gpio_refresh(127) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_gpio_refresh(131) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_activation_key(109) cmd=0xA4 0xC6 0xF4 0x8A ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_gpio_refresh(141) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=2 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_init(408) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_read_idcode(70)
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_read_idcode(74) 0x1 0xF 0x10 0x43 ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_enable(216) cmd=0xC6 0x0 0x0 0x0 ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_init(261) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_erase(238) cmd=0xE 0x0 0x0 0x0 ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: Add timeout 50ms after erase
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=1 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=8
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_erase(247) ret=0 status=0x140100000E0044B5
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_init(423) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_init(440) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_i2c_bitstream_burst_write(488) Submitting single FLAT I2C transfer. Total size = 808332 bytes.
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=21900
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=21900 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_i2c_bitstream_burst_write(497) Burst stream successfully transmitted via flat PIO
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_i2c_bitstream_burst_complete(578) skipping JTAG bypass clocks for I2C
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_complete(461) ret=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=1 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_finish(317) done_gpio=00000000a2fa32de
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=1 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=2
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 1)is_nostart=0 len=8
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_finish(321) ret=0 status=0x140105000E0044B5
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_disable(301) cmd=0x26 0x0 0x0 0x0 
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1041) num=1
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1049) 0)is_nostart=0 len=4
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: lpi2c_imx_xfer(1088) USE PIO for len=4 result=0
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_isc_finish(326) ret=0 
Oct 12 13:01:48 imx95-19x19-lpddr5-evk kernel: sysconfig_ops_write_complete(471) ret=-110


как-то очень быстро PIO выслал 21900(почему столько?) байт....Думаю в нём есть ограничение

static bool is_use_dma(struct lpi2c_imx_struct *lpi2c_imx, struct i2c_msg *msg)
{
	if (!lpi2c_imx->can_use_dma)
		return false;
	/*
	 * When system is in suspend process. LPI2C should use PIO to transfer data to
	 * avoid issue caused by not ready DMA HW resource.
	 */
	if (pm_suspend_target_state != PM_SUSPEND_ON)
		return false;
	/*
	 * When the length of data is less than I2C_DMA_THRESHOLD,
	 * cpu mode is used directly to avoid low performance.
	 */
	if (msg->len < I2C_DMA_THRESHOLD)
		return false;
	return true;
}

режим PIO используется только при пересылке данных msg->len < I2C_DMA_THRESHOLD: #define I2C_DMA_THRESHOLD	8 /* bytes */
Хотя я могу ошибаться....