rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame^] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #include <linux/fs.h> |
| 3 | |
| 4 | /** |
| 5 | * mod_firmware_load - load sound driver firmware |
| 6 | * @fn: filename |
| 7 | * @fp: return for the buffer. |
| 8 | * |
| 9 | * Load the firmware for a sound module (up to 128K) into a buffer. |
| 10 | * The buffer is returned in *fp. It is allocated with vmalloc so is |
| 11 | * virtually linear and not DMAable. The caller should free it with |
| 12 | * vfree when finished. |
| 13 | * |
| 14 | * The length of the buffer is returned on a successful load, the |
| 15 | * value zero on a failure. |
| 16 | * |
| 17 | * Caution: This API is not recommended. Firmware should be loaded via |
| 18 | * request_firmware. |
| 19 | */ |
| 20 | static inline int mod_firmware_load(const char *fn, char **fp) |
| 21 | { |
| 22 | loff_t size; |
| 23 | int err; |
| 24 | |
| 25 | err = kernel_read_file_from_path(fn, (void **)fp, &size, |
| 26 | 131072, READING_FIRMWARE); |
| 27 | if (err < 0) |
| 28 | return 0; |
| 29 | return size; |
| 30 | } |