linux-stable/drivers
Ivan Bornyakov 3cc624beba
fpga: fpga-mgr: support bitstream offset in image buffer
At the moment FPGA manager core loads to the device entire image
provided to fpga_mgr_load(). But it is not always whole FPGA image
buffer meant to be written to the device. In particular, .dat formatted
image for Microchip MPF contains meta info in the header that is not
meant to be written to the device. This is issue for those low level
drivers that loads data to the device with write() fpga_manager_ops
callback, since write() can be called in iterator over scatter-gather
table, not only linear image buffer. On the other hand, write_sg()
callback is provided with whole image in scatter-gather form and can
decide itself which part should be sent to the device.

Add header_size and data_size to the fpga_image_info struct, add
skip_header to the fpga_manager_ops struct and adjust fpga_mgr_write()
callers with respect to them.

  * info->header_size indicates part at the beginning of image buffer
    that contains some meta info. It is optional and can be 0,
    initialized with mops->initial_header_size.

  * mops->skip_header tells fpga-mgr core whether write should start
    from the beginning of image buffer or at the offset of header_size.

  * info->data_size is the size of bitstream data that is meant to be
    written to the device. It is also optional and can be 0, which
    means bitstream data is up to the end of image buffer.

Also add parse_header() callback to fpga_manager_ops, which purpose is
to set info->header_size and info->data_size. At least
initial_header_size bytes of image buffer will be passed into
parse_header() first time. If it is not enough, parse_header() should
set desired size into info->header_size and return -EAGAIN, then it will
be called again with greater part of image buffer on the input.

Suggested-by: Xu Yilun <yilun.xu@intel.com>
Signed-off-by: Ivan Bornyakov <i.bornyakov@metrotek.ru>
Acked-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20220623163248.3672-2-i.bornyakov@metrotek.ru
Signed-off-by: Xu Yilun <yilun.xu@intel.com>
2022-06-24 12:11:18 +08:00
..
accessibility
acpi More power management updates for 5.19-rc1 2022-05-30 11:37:26 -07:00
amba Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
android fix for breakage in #work.fd this window 2022-06-05 17:14:03 -07:00
ata ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
atm
auxdisplay
base firmware_loader: enable XZ by default if compressed support is enabled 2022-06-03 15:46:03 -07:00
bcma
block xen: branch for v5.19-rc1b 2022-06-04 13:42:53 -07:00
bluetooth
bus Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
cdrom
char Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
clk Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
clocksource Clockevent/clocksource updates: 2022-06-05 10:47:06 -07:00
comedi
connector
counter
cpufreq ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
cpuidle
crypto virtio-crypto: enable retry for virtio-crypto-dev 2022-05-31 12:45:09 -04:00
cxl
dax
dca
devfreq
dio
dma dmaengine updates for v5.19-rc1 2022-05-29 11:38:27 -07:00
dma-buf
edac
eisa
extcon
firewire
firmware Follow-up tweaks for the EFI changes in v5.19 2022-06-03 13:39:30 -07:00
fpga fpga: fpga-mgr: support bitstream offset in image buffer 2022-06-24 12:11:18 +08:00
fsi
gnss
gpio hte: New subsystem for v5.19-rc1 2022-06-05 09:12:28 -07:00
gpu Bitmap patches for 5.19-rc1 2022-06-04 14:04:27 -07:00
greybus
hid USB / Thunderbolt changes for 5.19-rc1 2022-06-03 11:17:49 -07:00
hsi
hte
hv Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
hwmon
hwspinlock
hwtracing
i2c i2c: ismt: prevent memory corruption in ismt_access() 2022-06-02 08:40:56 -07:00
i3c
idle
iio Bitmap patches for 5.19-rc1 2022-06-04 14:04:27 -07:00
infiniband v5.19 pull request 2022-05-26 21:08:40 -07:00
input xen: branch for v5.19-rc1b 2022-06-04 13:42:53 -07:00
interconnect Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
iommu IOMMU Updates for Linux v5.19 2022-05-31 09:56:54 -07:00
ipack
irqchip irq: mips: replace cpumask_weight with cpumask_empty where appropriate 2022-06-03 06:52:57 -07:00
isdn
leds ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
macintosh
mailbox
mcb
md for-5.19/drivers-2022-06-02 2022-06-03 10:25:56 -07:00
media USB / Thunderbolt changes for 5.19-rc1 2022-06-03 11:17:49 -07:00
memory More power management updates for 5.19-rc1 2022-05-30 11:37:26 -07:00
memstick
message
mfd mfd: intel-m10-bmc: Rename n3000bmc-secure driver 2022-06-08 17:04:19 +08:00
misc Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
mmc ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
most
mtd This pull request contains fixes for JFFS2, UBI and UBIFS 2022-06-03 14:42:24 -07:00
mux
net Bitmap patches for 5.19-rc1 2022-06-04 14:04:27 -07:00
nfc
ntb
nubus
nvdimm cxl for 5.19 2022-05-27 21:24:19 -07:00
nvme SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
nvmem
of
opp
parisc
parport
pci Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
pcmcia ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
peci
perf
phy
pinctrl Pin control bulk changes for the v5.19 series: 2022-05-28 11:15:54 -07:00
platform Cleanups and fixes 2022-05-30 11:01:50 -07:00
pnp
power Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
rtc ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
s390 Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
sbus
scsi SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
sh
siox
slimbus Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
soc Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
soundwire
spi Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
spmi
ssb
staging Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
target blk-mq: remove the done argument to blk_execute_rq_nowait 2022-05-28 06:15:27 -06:00
tc
tee Fix a compiler warning in OP-TEE driver 2022-05-30 14:44:27 +02:00
thermal Additional thermal control update for 5.19-rc1 2022-05-30 11:34:13 -07:00
thunderbolt USB / Thunderbolt changes for 5.19-rc1 2022-06-03 11:17:49 -07:00
tty xen: branch for v5.19-rc1b 2022-06-04 13:42:53 -07:00
ufs SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
uio
usb Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
vdpa Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
vfio VFIO updates for v5.19-rc1 2022-06-01 13:49:15 -07:00
vhost vhost: rename vhost_work_dev_flush 2022-05-31 12:45:10 -04:00
video parisc architecture fixes & updates for kernel v5.19-rc1 2022-06-04 13:50:23 -07:00
virt Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
virtio virtio: Directly use ida_alloc()/free() 2022-05-31 12:45:10 -04:00
vlynq
vme
w1
watchdog ARM: SoC changes, part 2 2022-06-02 15:27:44 -07:00
xen xen: branch for v5.19-rc1b 2022-06-04 13:42:53 -07:00
zorro
Kconfig SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
Makefile SCSI misc on 20220604 2022-06-05 09:25:12 -07:00