linux/drivers/i3c/master/mipi-i3c-hci/cmd_v1.c

// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2020, MIPI Alliance, Inc.
 *
 * Author: Nicolas Pitre <[email protected]>
 *
 * I3C HCI v1.0/v1.1 Command Descriptor Handling
 */

#include <linux/bitfield.h>
#include <linux/i3c/master.h>

#include "hci.h"
#include "cmd.h"
#include "dat.h"
#include "dct.h"


/*
 * Address Assignment Command
 */

#define CMD_0_ATTR_A

#define CMD_A0_TOC
#define CMD_A0_ROC
#define CMD_A0_DEV_COUNT(v)
#define CMD_A0_DEV_INDEX(v)
#define CMD_A0_CMD(v)
#define CMD_A0_TID(v)

/*
 * Immediate Data Transfer Command
 */

#define CMD_0_ATTR_I

#define CMD_I1_DATA_BYTE_4(v)
#define CMD_I1_DATA_BYTE_3(v)
#define CMD_I1_DATA_BYTE_2(v)
#define CMD_I1_DATA_BYTE_1(v)
#define CMD_I1_DEF_BYTE(v)
#define CMD_I0_TOC
#define CMD_I0_ROC
#define CMD_I0_RNW
#define CMD_I0_MODE(v)
#define CMD_I0_DTT(v)
#define CMD_I0_DEV_INDEX(v)
#define CMD_I0_CP
#define CMD_I0_CMD(v)
#define CMD_I0_TID(v)

/*
 * Regular Data Transfer Command
 */

#define CMD_0_ATTR_R

#define CMD_R1_DATA_LENGTH(v)
#define CMD_R1_DEF_BYTE(v)
#define CMD_R0_TOC
#define CMD_R0_ROC
#define CMD_R0_RNW
#define CMD_R0_MODE(v)
#define CMD_R0_DBP
#define CMD_R0_DEV_INDEX(v)
#define CMD_R0_CP
#define CMD_R0_CMD(v)
#define CMD_R0_TID(v)

/*
 * Combo Transfer (Write + Write/Read) Command
 */

#define CMD_0_ATTR_C

#define CMD_C1_DATA_LENGTH(v)
#define CMD_C1_OFFSET(v)
#define CMD_C0_TOC
#define CMD_C0_ROC
#define CMD_C0_RNW
#define CMD_C0_MODE(v)
#define CMD_C0_16_BIT_SUBOFFSET
#define CMD_C0_FIRST_PHASE_MODE
#define CMD_C0_DATA_LENGTH_POSITION(v)
#define CMD_C0_DEV_INDEX(v)
#define CMD_C0_CP
#define CMD_C0_CMD(v)
#define CMD_C0_TID(v)

/*
 * Internal Control Command
 */

#define CMD_0_ATTR_M

#define CMD_M1_VENDOR_SPECIFIC
#define CMD_M0_MIPI_RESERVED
#define CMD_M0_MIPI_CMD
#define CMD_M0_VENDOR_INFO_PRESENT
#define CMD_M0_TID(v)


/* Data Transfer Speed and Mode */
enum hci_cmd_mode {};

static enum hci_cmd_mode get_i3c_mode(struct i3c_hci *hci)
{}

static enum hci_cmd_mode get_i2c_mode(struct i3c_hci *hci)
{}

static void fill_data_bytes(struct hci_xfer *xfer, u8 *data,
			    unsigned int data_len)
{}

static int hci_cmd_v1_prep_ccc(struct i3c_hci *hci,
			       struct hci_xfer *xfer,
			       u8 ccc_addr, u8 ccc_cmd, bool raw)
{}

static void hci_cmd_v1_prep_i3c_xfer(struct i3c_hci *hci,
				     struct i3c_dev_desc *dev,
				     struct hci_xfer *xfer)
{}

static void hci_cmd_v1_prep_i2c_xfer(struct i3c_hci *hci,
				     struct i2c_dev_desc *dev,
				     struct hci_xfer *xfer)
{}

static int hci_cmd_v1_daa(struct i3c_hci *hci)
{}

const struct hci_cmd_ops mipi_i3c_hci_cmd_v1 =;