1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2023-2026 Intel Corporation */ 3 #ifndef _ISSEI_FW_CLIENT_H_ 4 #define _ISSEI_FW_CLIENT_H_ 5 6 #include <linux/device.h> 7 #include <linux/kobject.h> 8 #include <linux/types.h> 9 #include <linux/uuid.h> 10 11 struct issei_device; 12 struct issei_host_client; 13 14 /** 15 * struct issei_fw_client - represents firmware queue 16 * @kobj: associated kobject 17 * @list: link in firmware clients list 18 * @id: firmware client id 19 * @ver: firmware client version 20 * @uuid: firmware client protocol id 21 * @mtu: firmware client maximum buffer size 22 * @flags: firmware client flags 23 * @cl: pointer to host client, if connected 24 */ 25 struct issei_fw_client { 26 struct kobject kobj; 27 struct list_head list; 28 u16 id; 29 u8 ver; 30 uuid_t uuid; 31 u32 mtu; 32 u32 flags; 33 struct issei_host_client *cl; 34 }; 35 #define to_issei_fw_client(x) container_of(x, struct issei_fw_client, kobj) 36 37 struct issei_fw_client *issei_fw_cl_create(struct issei_device *idev, u16 id, u8 ver, 38 const uuid_t *uuid, u32 mtu, u32 flags); 39 void issei_fw_cl_remove_all(struct issei_device *idev); 40 struct issei_fw_client *issei_fw_cl_find_by_uuid(struct issei_device *idev, const uuid_t *uuid); 41 42 int issei_fw_cl_connect(struct issei_fw_client *fw_cl, struct issei_host_client *cl); 43 void issei_fw_cl_disconnect(struct issei_fw_client *fw_cl); 44 45 #endif /* _ISSEI_FW_CLIENT_H_ */ 46