drivers/misc/mei/client.h

Source file repositories/reference/linux-study-clean/drivers/misc/mei/client.h

File Facts

System
Linux kernel
Corpus path
drivers/misc/mei/client.h
Extension
.h
Size
7815 bytes
Lines
287
Domain
Driver Families
Bucket
drivers/misc
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef _MEI_CLIENT_H_
#define _MEI_CLIENT_H_

#include <linux/types.h>
#include <linux/poll.h>
#include <linux/mei.h>

#include "mei_dev.h"

/*
 * reference counting base function
 */
void mei_me_cl_init(struct mei_me_client *me_cl);
void mei_me_cl_put(struct mei_me_client *me_cl);
struct mei_me_client *mei_me_cl_get(struct mei_me_client *me_cl);

void mei_me_cl_add(struct mei_device *dev, struct mei_me_client *me_cl);
void mei_me_cl_del(struct mei_device *dev, struct mei_me_client *me_cl);

struct mei_me_client *mei_me_cl_by_uuid(struct mei_device *dev,
					const uuid_le *uuid);
struct mei_me_client *mei_me_cl_by_id(struct mei_device *dev, u8 client_id);
struct mei_me_client *mei_me_cl_by_uuid_id(struct mei_device *dev,
					   const uuid_le *uuid, u8 client_id);
void mei_me_cl_rm_by_uuid(struct mei_device *dev, const uuid_le *uuid);
void mei_me_cl_rm_all(struct mei_device *dev);

/**
 * mei_me_cl_is_active - check whether me client is active in the fw
 *
 * @me_cl: me client
 *
 * Return: true if the me client is active in the firmware
 */
static inline bool mei_me_cl_is_active(const struct mei_me_client *me_cl)
{
	return !list_empty_careful(&me_cl->list);
}

/**
 * mei_me_cl_uuid - return me client protocol name (uuid)
 *
 * @me_cl: me client
 *
 * Return: me client protocol name
 */
static inline const uuid_le *mei_me_cl_uuid(const struct mei_me_client *me_cl)
{
	return &me_cl->props.protocol_name;
}

/**
 * mei_me_cl_ver - return me client protocol version
 *
 * @me_cl: me client
 *
 * Return: me client protocol version
 */
static inline u8 mei_me_cl_ver(const struct mei_me_client *me_cl)
{
	return me_cl->props.protocol_version;
}

/**
 * mei_me_cl_max_conn - return me client max number of connections
 *
 * @me_cl: me client
 *
 * Return: me client max number of connections
 */
static inline u8 mei_me_cl_max_conn(const struct mei_me_client *me_cl)
{
	return me_cl->props.max_number_of_connections;
}

/**
 * mei_me_cl_fixed - return me client fixed address, if any
 *
 * @me_cl: me client
 *
 * Return: me client fixed address
 */
static inline u8 mei_me_cl_fixed(const struct mei_me_client *me_cl)
{
	return me_cl->props.fixed_address;
}

/**
 * mei_me_cl_vt - return me client vtag supported status
 *

Annotation

Implementation Notes