This adds basic support for hardware implementing the MIPI I3C HCI specification. This driver is currently limited by the capabilities of the I3C subsystem, meaning things like scheduled commands, auto-commands and NCM mode are not yet supported. This supports version 1.0 of the MIPI I3C HCI spec, as well as the imminent release of version 1.1. Support for draft version 2.0 of the spec is also largely included with the caveat that future adjustments to this code are likely as the spec is still a work in progress. This is also lightly tested as actual hardware is still very scarce, even for HCI v1.0. Hence the EXPERIMENTAL tag. Further contributions to this driver are expected once vendor implementations and new I3C devices become available. Signed-off-by: Nicolas Pitre <npitre@baylibre.com> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://lore.kernel.org/linux-i3c/20201111220510.3622216-3-nico@fluxnic.net
33 lines
979 B
C
33 lines
979 B
C
/* SPDX-License-Identifier: BSD-3-Clause */
|
|
/*
|
|
* Copyright (c) 2020, MIPI Alliance, Inc.
|
|
*
|
|
* Author: Nicolas Pitre <npitre@baylibre.com>
|
|
*
|
|
* Common DAT related stuff
|
|
*/
|
|
|
|
#ifndef DAT_H
|
|
#define DAT_H
|
|
|
|
/* Global DAT flags */
|
|
#define DAT_0_I2C_DEVICE W0_BIT_(31)
|
|
#define DAT_0_SIR_REJECT W0_BIT_(13)
|
|
#define DAT_0_IBI_PAYLOAD W0_BIT_(12)
|
|
|
|
struct hci_dat_ops {
|
|
int (*init)(struct i3c_hci *hci);
|
|
void (*cleanup)(struct i3c_hci *hci);
|
|
int (*alloc_entry)(struct i3c_hci *hci);
|
|
void (*free_entry)(struct i3c_hci *hci, unsigned int dat_idx);
|
|
void (*set_dynamic_addr)(struct i3c_hci *hci, unsigned int dat_idx, u8 addr);
|
|
void (*set_static_addr)(struct i3c_hci *hci, unsigned int dat_idx, u8 addr);
|
|
void (*set_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
|
|
void (*clear_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
|
|
int (*get_index)(struct i3c_hci *hci, u8 address);
|
|
};
|
|
|
|
extern const struct hci_dat_ops mipi_i3c_hci_dat_v1;
|
|
|
|
#endif
|