.. | .. |
---|
1 | | -/** |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
| 2 | +/* |
---|
2 | 3 | * IBM Accelerator Family 'GenWQE' |
---|
3 | 4 | * |
---|
4 | 5 | * (C) Copyright IBM Corp. 2013 |
---|
.. | .. |
---|
7 | 8 | * Author: Joerg-Stephan Vogt <jsvogt@de.ibm.com> |
---|
8 | 9 | * Author: Michael Jung <mijung@gmx.net> |
---|
9 | 10 | * Author: Michael Ruettger <michael@ibmra.de> |
---|
10 | | - * |
---|
11 | | - * This program is free software; you can redistribute it and/or modify |
---|
12 | | - * it under the terms of the GNU General Public License (version 2 only) |
---|
13 | | - * as published by the Free Software Foundation. |
---|
14 | | - * |
---|
15 | | - * This program is distributed in the hope that it will be useful, |
---|
16 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
17 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
18 | | - * GNU General Public License for more details. |
---|
19 | 11 | */ |
---|
20 | 12 | |
---|
21 | 13 | /* |
---|
.. | .. |
---|
95 | 87 | * @cfile: Descriptor of opened file |
---|
96 | 88 | * @u_addr: User virtual address |
---|
97 | 89 | * @size: Size of buffer |
---|
98 | | - * @dma_addr: DMA address to be updated |
---|
| 90 | + * @virt_addr: Virtual address to be updated |
---|
99 | 91 | * |
---|
100 | 92 | * Return: Pointer to the corresponding mapping NULL if not found |
---|
101 | 93 | */ |
---|
.. | .. |
---|
152 | 144 | * @u_addr: user virtual address |
---|
153 | 145 | * @size: size of buffer |
---|
154 | 146 | * @dma_addr: DMA address to be updated |
---|
| 147 | + * @virt_addr: Virtual address to be updated |
---|
155 | 148 | * Return: Pointer to the corresponding mapping NULL if not found |
---|
156 | 149 | */ |
---|
157 | 150 | static struct dma_mapping *__genwqe_search_mapping(struct genwqe_file *cfile, |
---|
.. | .. |
---|
257 | 250 | |
---|
258 | 251 | /** |
---|
259 | 252 | * genwqe_kill_fasync() - Send signal to all processes with open GenWQE files |
---|
| 253 | + * @cd: GenWQE device information |
---|
| 254 | + * @sig: Signal to send out |
---|
260 | 255 | * |
---|
261 | 256 | * E.g. genwqe_send_signal(cd, SIGIO); |
---|
262 | 257 | */ |
---|
.. | .. |
---|
388 | 383 | |
---|
389 | 384 | /** |
---|
390 | 385 | * genwqe_vma_close() - Called each time when vma is unmapped |
---|
| 386 | + * @vma: VMA area to close |
---|
391 | 387 | * |
---|
392 | 388 | * Free memory which got allocated by GenWQE mmap(). |
---|
393 | 389 | */ |
---|
.. | .. |
---|
424 | 420 | |
---|
425 | 421 | /** |
---|
426 | 422 | * genwqe_mmap() - Provide contignous buffers to userspace |
---|
| 423 | + * @filp: File pointer (unused) |
---|
| 424 | + * @vma: VMA area to map |
---|
427 | 425 | * |
---|
428 | 426 | * We use mmap() to allocate contignous buffers used for DMA |
---|
429 | 427 | * transfers. After the buffer is allocated we remap it to user-space |
---|
.. | .. |
---|
492 | 490 | return rc; |
---|
493 | 491 | } |
---|
494 | 492 | |
---|
| 493 | +#define FLASH_BLOCK 0x40000 /* we use 256k blocks */ |
---|
| 494 | + |
---|
495 | 495 | /** |
---|
496 | 496 | * do_flash_update() - Excute flash update (write image or CVPD) |
---|
497 | | - * @cd: genwqe device |
---|
| 497 | + * @cfile: Descriptor of opened file |
---|
498 | 498 | * @load: details about image load |
---|
499 | 499 | * |
---|
500 | 500 | * Return: 0 if successful |
---|
501 | 501 | */ |
---|
502 | | - |
---|
503 | | -#define FLASH_BLOCK 0x40000 /* we use 256k blocks */ |
---|
504 | | - |
---|
505 | 502 | static int do_flash_update(struct genwqe_file *cfile, |
---|
506 | 503 | struct genwqe_bitstream *load) |
---|
507 | 504 | { |
---|
.. | .. |
---|
828 | 825 | |
---|
829 | 826 | /** |
---|
830 | 827 | * ddcb_cmd_cleanup() - Remove dynamically created fixup entries |
---|
| 828 | + * @cfile: Descriptor of opened file |
---|
| 829 | + * @req: DDCB work request |
---|
831 | 830 | * |
---|
832 | 831 | * Only if there are any. Pinnings are not removed. |
---|
833 | 832 | */ |
---|
.. | .. |
---|
852 | 851 | |
---|
853 | 852 | /** |
---|
854 | 853 | * ddcb_cmd_fixups() - Establish DMA fixups/sglists for user memory references |
---|
| 854 | + * @cfile: Descriptor of opened file |
---|
| 855 | + * @req: DDCB work request |
---|
855 | 856 | * |
---|
856 | 857 | * Before the DDCB gets executed we need to handle the fixups. We |
---|
857 | 858 | * replace the user-space addresses with DMA addresses or do |
---|
.. | .. |
---|
982 | 983 | |
---|
983 | 984 | /** |
---|
984 | 985 | * genwqe_execute_ddcb() - Execute DDCB using userspace address fixups |
---|
| 986 | + * @cfile: Descriptor of opened file |
---|
| 987 | + * @cmd: Command identifier (passed from user) |
---|
985 | 988 | * |
---|
986 | 989 | * The code will build up the translation tables or lookup the |
---|
987 | 990 | * contignous memory allocation table to find the right translations |
---|
.. | .. |
---|
1223 | 1226 | return rc; |
---|
1224 | 1227 | } |
---|
1225 | 1228 | |
---|
1226 | | -#if defined(CONFIG_COMPAT) |
---|
1227 | | -/** |
---|
1228 | | - * genwqe_compat_ioctl() - Compatibility ioctl |
---|
1229 | | - * |
---|
1230 | | - * Called whenever a 32-bit process running under a 64-bit kernel |
---|
1231 | | - * performs an ioctl on /dev/genwqe<n>_card. |
---|
1232 | | - * |
---|
1233 | | - * @filp: file pointer. |
---|
1234 | | - * @cmd: command. |
---|
1235 | | - * @arg: user argument. |
---|
1236 | | - * Return: zero on success or negative number on failure. |
---|
1237 | | - */ |
---|
1238 | | -static long genwqe_compat_ioctl(struct file *filp, unsigned int cmd, |
---|
1239 | | - unsigned long arg) |
---|
1240 | | -{ |
---|
1241 | | - return genwqe_ioctl(filp, cmd, arg); |
---|
1242 | | -} |
---|
1243 | | -#endif /* defined(CONFIG_COMPAT) */ |
---|
1244 | | - |
---|
1245 | 1229 | static const struct file_operations genwqe_fops = { |
---|
1246 | 1230 | .owner = THIS_MODULE, |
---|
1247 | 1231 | .open = genwqe_open, |
---|
1248 | 1232 | .fasync = genwqe_fasync, |
---|
1249 | 1233 | .mmap = genwqe_mmap, |
---|
1250 | 1234 | .unlocked_ioctl = genwqe_ioctl, |
---|
1251 | | -#if defined(CONFIG_COMPAT) |
---|
1252 | | - .compat_ioctl = genwqe_compat_ioctl, |
---|
1253 | | -#endif |
---|
| 1235 | + .compat_ioctl = compat_ptr_ioctl, |
---|
1254 | 1236 | .release = genwqe_release, |
---|
1255 | 1237 | }; |
---|
1256 | 1238 | |
---|
.. | .. |
---|
1309 | 1291 | goto err_cdev; |
---|
1310 | 1292 | } |
---|
1311 | 1293 | |
---|
1312 | | - rc = genwqe_init_debugfs(cd); |
---|
1313 | | - if (rc != 0) |
---|
1314 | | - goto err_debugfs; |
---|
| 1294 | + genwqe_init_debugfs(cd); |
---|
1315 | 1295 | |
---|
1316 | 1296 | return 0; |
---|
1317 | 1297 | |
---|
1318 | | - err_debugfs: |
---|
1319 | | - device_destroy(cd->class_genwqe, cd->devnum_genwqe); |
---|
1320 | 1298 | err_cdev: |
---|
1321 | 1299 | cdev_del(&cd->cdev_genwqe); |
---|
1322 | 1300 | err_add: |
---|
.. | .. |
---|
1372 | 1350 | |
---|
1373 | 1351 | /** |
---|
1374 | 1352 | * genwqe_device_remove() - Remove genwqe's char device |
---|
| 1353 | + * @cd: GenWQE device information |
---|
1375 | 1354 | * |
---|
1376 | 1355 | * This function must be called after the client devices are removed |
---|
1377 | 1356 | * because it will free the major/minor number range for the genwqe |
---|