diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c index 696918a6fa4fb139768eae796a0f55ffd5eb0e9f..fd6470f42671ef0418c468791ede8b4164521b0a 100644 --- a/drivers/misc/mei/bus-fixup.c +++ b/drivers/misc/mei/bus-fixup.c @@ -32,6 +32,24 @@ #define MEI_UUID_ANY NULL_UUID_LE +/** + * number_of_connections - determine whether an client be on the bus + * according number of connections + * We support only clients: + * 1. with single connection + * 2. and fixed clients (max_number_of_connections == 0) + * + * @cldev: me clients device + */ +static void number_of_connections(struct mei_cl_device *cldev) +{ + dev_dbg(&cldev->dev, "running hook %s on %pUl\n", + __func__, mei_me_cl_uuid(cldev->me_cl)); + + if (cldev->me_cl->props.max_number_of_connections > 1) + cldev->do_match = 0; +} + /** * blacklist - blacklist a client from the bus * @@ -435,6 +453,7 @@ static struct mei_fixup { const uuid_le uuid; void (*hook)(struct mei_cl_device *cldev); } mei_fixups[] = { + MEI_FIXUP(MEI_UUID_ANY, number_of_connections), MEI_FIXUP(MEI_UUID_NFC_INFO, blacklist), };