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

Commit cc25aa94 authored by Alexander Usyskin's avatar Alexander Usyskin Committed by Greg Kroah-Hartman
Browse files

mei: drop global me_client_index



Global me_client_index is used only during the enumeration process and
can be effectively replaced by me_addr data from the last enumeration
response as we always enumerate clients in the increasing order.

Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b9c79543
Loading
Loading
Loading
Loading
+8 −15
Original line number Original line Diff line number Diff line
@@ -113,8 +113,6 @@ void mei_hbm_idle(struct mei_device *dev)
 */
 */
void mei_hbm_reset(struct mei_device *dev)
void mei_hbm_reset(struct mei_device *dev)
{
{
	dev->me_client_index = 0;

	mei_me_cl_rm_all(dev);
	mei_me_cl_rm_all(dev);


	mei_hbm_idle(dev);
	mei_hbm_idle(dev);
@@ -530,24 +528,22 @@ static void mei_hbm_cl_notify(struct mei_device *dev,
 * mei_hbm_prop_req - request property for a single client
 * mei_hbm_prop_req - request property for a single client
 *
 *
 * @dev: the device structure
 * @dev: the device structure
 * @start_idx: client index to start search
 *
 *
 * Return: 0 on success and < 0 on failure
 * Return: 0 on success and < 0 on failure
 */
 */

static int mei_hbm_prop_req(struct mei_device *dev, unsigned long start_idx)
static int mei_hbm_prop_req(struct mei_device *dev)
{
{

	struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr;
	struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr;
	struct hbm_props_request *prop_req;
	struct hbm_props_request *prop_req;
	const size_t len = sizeof(struct hbm_props_request);
	const size_t len = sizeof(struct hbm_props_request);
	unsigned long next_client_index;
	unsigned long addr;
	int ret;
	int ret;


	next_client_index = find_next_bit(dev->me_clients_map, MEI_CLIENTS_MAX,
	addr = find_next_bit(dev->me_clients_map, MEI_CLIENTS_MAX, start_idx);
					  dev->me_client_index);


	/* We got all client properties */
	/* We got all client properties */
	if (next_client_index == MEI_CLIENTS_MAX) {
	if (addr == MEI_CLIENTS_MAX) {
		dev->hbm_state = MEI_HBM_STARTED;
		dev->hbm_state = MEI_HBM_STARTED;
		mei_host_client_init(dev);
		mei_host_client_init(dev);


@@ -560,7 +556,7 @@ static int mei_hbm_prop_req(struct mei_device *dev)
	memset(prop_req, 0, sizeof(struct hbm_props_request));
	memset(prop_req, 0, sizeof(struct hbm_props_request));


	prop_req->hbm_cmd = HOST_CLIENT_PROPERTIES_REQ_CMD;
	prop_req->hbm_cmd = HOST_CLIENT_PROPERTIES_REQ_CMD;
	prop_req->me_addr = next_client_index;
	prop_req->me_addr = addr;


	ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data);
	ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data);
	if (ret) {
	if (ret) {
@@ -570,7 +566,6 @@ static int mei_hbm_prop_req(struct mei_device *dev)
	}
	}


	dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT;
	dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT;
	dev->me_client_index = next_client_index;


	return 0;
	return 0;
}
}
@@ -1152,10 +1147,8 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)


		mei_hbm_me_cl_add(dev, props_res);
		mei_hbm_me_cl_add(dev, props_res);


		dev->me_client_index++;

		/* request property for the next client */
		/* request property for the next client */
		if (mei_hbm_prop_req(dev))
		if (mei_hbm_prop_req(dev, props_res->me_addr + 1))
			return -EIO;
			return -EIO;


		break;
		break;
@@ -1181,7 +1174,7 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
		dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES;
		dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES;


		/* first property request */
		/* first property request */
		if (mei_hbm_prop_req(dev))
		if (mei_hbm_prop_req(dev, 0))
			return -EIO;
			return -EIO;


		break;
		break;
+0 −2
Original line number Original line Diff line number Diff line
@@ -396,7 +396,6 @@ const char *mei_pg_state_str(enum mei_pg_state state);
 * @me_clients  : list of FW clients
 * @me_clients  : list of FW clients
 * @me_clients_map : FW clients bit map
 * @me_clients_map : FW clients bit map
 * @host_clients_map : host clients id pool
 * @host_clients_map : host clients id pool
 * @me_client_index : last FW client index in enumeration
 *
 *
 * @allow_fixed_address: allow user space to connect a fixed client
 * @allow_fixed_address: allow user space to connect a fixed client
 * @override_fixed_address: force allow fixed address behavior
 * @override_fixed_address: force allow fixed address behavior
@@ -486,7 +485,6 @@ struct mei_device {
	struct list_head me_clients;
	struct list_head me_clients;
	DECLARE_BITMAP(me_clients_map, MEI_CLIENTS_MAX);
	DECLARE_BITMAP(me_clients_map, MEI_CLIENTS_MAX);
	DECLARE_BITMAP(host_clients_map, MEI_CLIENTS_MAX);
	DECLARE_BITMAP(host_clients_map, MEI_CLIENTS_MAX);
	unsigned long me_client_index;


	bool allow_fixed_address;
	bool allow_fixed_address;
	bool override_fixed_address;
	bool override_fixed_address;