Lines Matching refs:sfs_dev
24 static int send_sfs_cmd(struct sfs_device *sfs_dev, int msg) in send_sfs_cmd() argument
28 sfs_dev->command_buf->hdr.status = 0; in send_sfs_cmd()
29 sfs_dev->command_buf->hdr.sub_cmd_id = msg; in send_sfs_cmd()
31 ret = psp_extended_mailbox_cmd(sfs_dev->psp, in send_sfs_cmd()
33 (struct psp_ext_request *)sfs_dev->command_buf); in send_sfs_cmd()
35 dev_dbg(sfs_dev->dev, in send_sfs_cmd()
37 msg, sfs_dev->command_buf->hdr.status, in send_sfs_cmd()
38 *(u32 *)sfs_dev->command_buf->buf); in send_sfs_cmd()
44 static int send_sfs_get_fw_versions(struct sfs_device *sfs_dev) in send_sfs_get_fw_versions() argument
50 memset(sfs_dev->command_buf->sfs_buffer, 0xc7, PAGE_SIZE); in send_sfs_get_fw_versions()
51 sfs_dev->command_buf->hdr.payload_size = 2 * PAGE_SIZE; in send_sfs_get_fw_versions()
53 return send_sfs_cmd(sfs_dev, PSP_SFS_GET_FW_VERSIONS); in send_sfs_get_fw_versions()
56 static int send_sfs_update_package(struct sfs_device *sfs_dev, const char *payload_name) in send_sfs_update_package() argument
69 ret = firmware_request_nowarn(&firmware, payload_path, sfs_dev->dev); in send_sfs_update_package()
71 dev_warn_ratelimited(sfs_dev->dev, "firmware request failed for %s (%d)\n", in send_sfs_update_package()
87 dev_warn_ratelimited(sfs_dev->dev, in send_sfs_update_package()
97 memcpy(sfs_dev->command_buf->sfs_buffer, firmware->data, firmware->size); in send_sfs_update_package()
98 sfs_dev->command_buf->hdr.payload_size = package_size; in send_sfs_update_package()
102 return send_sfs_cmd(sfs_dev, PSP_SFS_UPDATE); in send_sfs_update_package()
111 struct sfs_device *sfs_dev; in sfs_ioctl() local
117 sfs_dev = psp_master->sfs_data; in sfs_ioctl()
123 dev_dbg(sfs_dev->dev, "in SFSIOCFWVERS\n"); in sfs_ioctl()
127 ret = send_sfs_get_fw_versions(sfs_dev); in sfs_ioctl()
135 if (copy_to_user(&sfs_get_fw_versions->blob, sfs_dev->command_buf->sfs_buffer, in sfs_ioctl()
139 &sfs_dev->command_buf->hdr.status, in sfs_ioctl()
143 &sfs_dev->command_buf->buf, in sfs_ioctl()
148 dev_dbg(sfs_dev->dev, "in SFSIOCUPDATEPKG\n"); in sfs_ioctl()
156 ret = send_sfs_update_package(sfs_dev, payload_name); in sfs_ioctl()
165 &sfs_dev->command_buf->hdr.status, in sfs_ioctl()
169 &sfs_dev->command_buf->buf, in sfs_ioctl()
194 struct sfs_device *sfs_dev = psp->sfs_data; in sfs_dev_destroy() local
196 if (!sfs_dev) in sfs_dev_destroy()
202 set_memory_wb((unsigned long)sfs_dev->command_buf, SFS_NUM_PAGES_CMDBUF); in sfs_dev_destroy()
204 snp_free_hv_fixed_pages(sfs_dev->page); in sfs_dev_destroy()
206 if (sfs_dev->misc) in sfs_dev_destroy()
254 struct sfs_device *sfs_dev; in sfs_dev_init() local
258 sfs_dev = devm_kzalloc(dev, sizeof(*sfs_dev), GFP_KERNEL); in sfs_dev_init()
259 if (!sfs_dev) in sfs_dev_init()
272 sfs_dev->page = page; in sfs_dev_init()
273 sfs_dev->command_buf = page_address(page); in sfs_dev_init()
275 dev_dbg(dev, "Command buffer 0x%px to be marked as HV_Fixed\n", sfs_dev->command_buf); in sfs_dev_init()
280 ret = set_memory_uc((unsigned long)sfs_dev->command_buf, SFS_NUM_PAGES_CMDBUF); in sfs_dev_init()
286 dev_dbg(dev, "Command buffer 0x%px marked uncacheable\n", sfs_dev->command_buf); in sfs_dev_init()
288 psp->sfs_data = sfs_dev; in sfs_dev_init()
289 sfs_dev->dev = dev; in sfs_dev_init()
290 sfs_dev->psp = psp; in sfs_dev_init()
292 ret = sfs_misc_init(sfs_dev); in sfs_dev_init()
296 dev_notice(sfs_dev->dev, "SFS support is available\n"); in sfs_dev_init()
301 set_memory_wb((unsigned long)sfs_dev->command_buf, SFS_NUM_PAGES_CMDBUF); in sfs_dev_init()
308 devm_kfree(dev, sfs_dev); in sfs_dev_init()