diff options
author | Vikram Mulukutla <markivx@codeaurora.org> | 2014-04-10 20:23:30 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 11:07:36 -0700 |
commit | 9c0b572b23bdd9a9d42d556615343bdc101b5ca6 (patch) | |
tree | 2d9b3ad15a83309a9590d245792a45b1e4ac5fdf /include/linux/firmware.h | |
parent | 53adc478c89511d5614940fd7580e8225160d007 (diff) |
firmware_class: Allow private data in [unmap|map]_fw_mem
Some callers of request_firmware_direct may need additional
context to be able to map firmware memory. Allow private data
to be passed in with request_firmware_direct, and send this
data along with the [unmap|map]_fw_mem callbacks.
Change-Id: I05a15eb46cc663a4476b784e30e80182a28e10c3
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
[joshc: dropped PIL portions, fixed trivial conflict in firmware.h due
to API rename]
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
[vmulukut: adjusted for upstream merge conflicts]
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
Diffstat (limited to 'include/linux/firmware.h')
-rw-r--r-- | include/linux/firmware.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/include/linux/firmware.h b/include/linux/firmware.h index bb31b5ad09f7..7a49a0976f06 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h @@ -51,15 +51,16 @@ int request_firmware_direct(const struct firmware **fw, const char *name, int request_firmware_into_buf(const char *name, struct device *device, phys_addr_t dest_addr, size_t dest_size, void * (*map_fw_mem)(phys_addr_t phys, - size_t size), - void (*unmap_fw_mem)(void *virt)); + size_t size, void *data), + void (*unmap_fw_mem)(void *virt, void *data), + void *data); int request_firmware_nowait_into_buf( struct module *module, bool uevent, const char *name, struct device *device, gfp_t gfp, void *context, void (*cont)(const struct firmware *fw, void *context), phys_addr_t dest_addr, size_t dest_size, - void * (*map_fw_mem)(phys_addr_t phys, size_t size), - void (*unmap_fw_mem)(void *virt)); + void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data), + void (*unmap_fw_mem)(void *virt, void *data), void *data); void release_firmware(const struct firmware *fw); #else static inline int request_firmware(const struct firmware **fw, @@ -73,8 +74,10 @@ static inline int request_firmware_into_buf(const char *name, phys_addr_t dest_addr, size_t dest_size, void * (*map_fw_mem)(phys_addr_t phys, - size_t size), - void (*unmap_fw_mem)(void *virt)) + size_t size, void *data), + void (*unmap_fw_mem)(void *virt, + void *data), + void *data) { return -EINVAL; } @@ -90,8 +93,8 @@ static inline int request_firmware_nowait_into_buf( const char *name, struct device *device, gfp_t gfp, void *context, void (*cont)(const struct firmware *fw, void *context), phys_addr_t dest_addr, size_t dest_size, - void * (*map_fw_mem)(phys_addr_t phys, size_t size), - void (*unmap_fw_mem)(void *virt)) + void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data), + void (*unmap_fw_mem)(void *virt, void *data), void *data) { return -EINVAL; } |