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