Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d65cf38 authored by Vikram Mulukutla's avatar Vikram Mulukutla Committed by David Keitel
Browse files

firmware_class: Include a size argument in unmap_fw_mem



Some implementations may need to know the size of a
region allocated by map_fw_mem in the context of the
unmap_fw_mem callback. Add this as an argument to the
callback signature.

Signed-off-by: default avatarVikram Mulukutla <markivx@codeaurora.org>
parent 9c0b572b
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ struct firmware_buf {
	phys_addr_t dest_addr;
	size_t dest_size;
	void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data);
	void (*unmap_fw_mem)(void *virt, void *data);
	void (*unmap_fw_mem)(void *virt, size_t size, void *data);
	void *map_data;
#ifdef CONFIG_FW_LOADER_USER_HELPER
	bool is_paged_buf;
@@ -179,7 +179,7 @@ struct fw_desc {
	phys_addr_t dest_addr;
	size_t dest_size;
	void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data);
	void (*unmap_fw_mem)(void *virt, void *data);
	void (*unmap_fw_mem)(void *virt, size_t size, void *data);
	void *map_data;
	struct module *module;
	void *context;
@@ -351,11 +351,11 @@ static int fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf)
	fw_buf->data = buf;
	fw_buf->size = size;
	if (fw_buf->dest_addr)
		fw_buf->unmap_fw_mem(buf, fw_buf->map_data);
		fw_buf->unmap_fw_mem(buf, fw_buf->size, fw_buf->map_data);
	return 0;
fail:
	if (fw_buf->dest_addr)
		fw_buf->unmap_fw_mem(buf, fw_buf->map_data);
		fw_buf->unmap_fw_mem(buf, fw_buf->size, fw_buf->map_data);
	else
		vfree(buf);
	return rc;
@@ -786,7 +786,7 @@ static int __firmware_data_rw(struct firmware_priv *fw_priv, char *buffer,
		memcpy(fw_buf, buffer, count);

	*offset += count;
	buf->unmap_fw_mem(fw_buf, buf->map_data);
	buf->unmap_fw_mem(fw_buf, count, buf->map_data);

out:
	return retval;
@@ -1436,7 +1436,7 @@ 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 *data),
			void (*unmap_fw_mem)(void *virt, void *data),
			void (*unmap_fw_mem)(void *virt, size_t sz, void *data),
			void *map_data)
{
	struct fw_desc desc;
@@ -1504,7 +1504,7 @@ _request_firmware_nowait(
	void (*cont)(const struct firmware *fw, void *context),
	bool nocache, phys_addr_t dest_addr, size_t dest_size,
	void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data),
	void (*unmap_fw_mem)(void *virt, void *data),
	void (*unmap_fw_mem)(void *virt, size_t size, void *data),
	void *map_data)
{
	struct fw_desc *desc;
@@ -1599,7 +1599,7 @@ request_firmware_nowait_into_buf(
	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 *data),
	void (*unmap_fw_mem)(void *virt, void *data),
	void (*unmap_fw_mem)(void *virt, size_t size, void *data),
	void *map_data)
{
	return _request_firmware_nowait(module, uevent, name, device, gfp,
+5 −3
Original line number Diff line number Diff line
@@ -52,7 +52,8 @@ 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 *data),
			    void (*unmap_fw_mem)(void *virt, void *data),
			    void (*unmap_fw_mem)(void *virt, size_t size,
						 void *data),
			    void *data);
int request_firmware_nowait_into_buf(
	struct module *module, bool uevent,
@@ -60,7 +61,7 @@ int request_firmware_nowait_into_buf(
	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 *data),
	void (*unmap_fw_mem)(void *virt, void *data), void *data);
	void (*unmap_fw_mem)(void *virt, size_t size, void *data), void *data);
void release_firmware(const struct firmware *fw);
#else
static inline int request_firmware(const struct firmware **fw,
@@ -76,6 +77,7 @@ static inline int request_firmware_into_buf(const char *name,
					  void * (*map_fw_mem)(phys_addr_t phys,
						       size_t size, void *data),
					  void (*unmap_fw_mem)(void *virt,
							       size_t size,
							       void *data),
					  void *data)
{
@@ -94,7 +96,7 @@ static inline int request_firmware_nowait_into_buf(
	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 *data),
	void (*unmap_fw_mem)(void *virt, void *data), void *data)
	void (*unmap_fw_mem)(void *virt, size_t size, void *data), void *data)
{
	return -EINVAL;
}