Lines Matching +full:firmware +full:. +full:img
7 #include "iwl-drv.h"
8 #include "runtime.h"
9 #include "fw/api/commands.h"
15 if (!fwrt->fw_paging_db[0].fw_paging_block) in iwl_free_fw_paging()
47 if (fwrt->fw_paging_db[0].fw_paging_block) in iwl_alloc_fw_paging_mem()
66 * Allocate CSS and paging blocks in dram. in iwl_alloc_fw_paging_mem()
79 fwrt->fw_paging_db[blk_idx].fw_paging_block = block; in iwl_alloc_fw_paging_mem()
80 fwrt->fw_paging_db[blk_idx].fw_paging_size = size; in iwl_alloc_fw_paging_mem()
88 * since we failed to map_page. in iwl_alloc_fw_paging_mem()
93 fwrt->fw_paging_db[blk_idx].fw_paging_phys = phys; in iwl_alloc_fw_paging_mem()
97 "Paging: allocated 4K(CSS) bytes (order %d) for firmware paging.\n", in iwl_alloc_fw_paging_mem()
101 "Paging: allocated 32K bytes (order %d) for firmware paging.\n", in iwl_alloc_fw_paging_mem()
126 if (image->sec[sec_idx].offset == PAGING_SEPARATOR_SECTION) { in iwl_fill_paging_mem()
146 if (image->sec[sec_idx].len > fwrt->fw_paging_db[0].fw_paging_size) { in iwl_fill_paging_mem()
152 memcpy(page_address(fwrt->fw_paging_db[0].fw_paging_block), in iwl_fill_paging_mem()
153 image->sec[sec_idx].data, in iwl_fill_paging_mem()
154 image->sec[sec_idx].len); in iwl_fill_paging_mem()
155 fwrt->fw_paging_db[0].fw_offs = image->sec[sec_idx].offset; in iwl_fill_paging_mem()
157 fwrt->fw_paging_db[0].fw_paging_phys, in iwl_fill_paging_mem()
158 fwrt->fw_paging_db[0].fw_paging_size, in iwl_fill_paging_mem()
163 fwrt->fw_paging_db[0].fw_paging_size); in iwl_fill_paging_mem()
168 * Copy the paging blocks to the dram. The loop index starts in iwl_fill_paging_mem()
170 * dram. We use num_of_paging_blk + 1 to account for that. in iwl_fill_paging_mem()
174 int remaining = image->sec[sec_idx].len - offset; in iwl_fill_paging_mem()
180 * time. */ in iwl_fill_paging_mem()
200 (const u8 *)image->sec[sec_idx].data + offset, len); in iwl_fill_paging_mem()
201 block->fw_offs = image->sec[sec_idx].offset + offset; in iwl_fill_paging_mem()
238 .flags = cpu_to_le32(PAGING_CMD_IS_SECURED | in iwl_send_paging_cmd()
242 .block_size = cpu_to_le32(BLOCK_2_EXP_SIZE), in iwl_send_paging_cmd()
243 .block_num = cpu_to_le32(fwrt->num_of_paging_blk), in iwl_send_paging_cmd()
246 .id = WIDE_ID(IWL_ALWAYS_LONG_GROUP, FW_PAGING_BLOCK_CMD), in iwl_send_paging_cmd()
247 .len = { sizeof(paging_cmd), }, in iwl_send_paging_cmd()
248 .data = { &paging_cmd, }, in iwl_send_paging_cmd()
254 dma_addr_t addr = fwrt->fw_paging_db[blk_idx].fw_paging_phys; in iwl_send_paging_cmd()
259 paging_cmd.device_phy_addr[blk_idx] = phy_addr; in iwl_send_paging_cmd()
267 const struct fw_img *fw = &fwrt->fw->img[type]; in iwl_init_paging()
274 * Configure and operate fw paging mechanism. in iwl_init_paging()
275 * The driver configures the paging flow only once. in iwl_init_paging()
276 * The CPU2 paging image is included in the IWL_UCODE_INIT image. in iwl_init_paging()