xref: /openbmc/linux/drivers/i3c/master/mipi-i3c-hci/dat.h (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
1*9ad9a52cSNicolas Pitre /* SPDX-License-Identifier: BSD-3-Clause */
2*9ad9a52cSNicolas Pitre /*
3*9ad9a52cSNicolas Pitre  * Copyright (c) 2020, MIPI Alliance, Inc.
4*9ad9a52cSNicolas Pitre  *
5*9ad9a52cSNicolas Pitre  * Author: Nicolas Pitre <npitre@baylibre.com>
6*9ad9a52cSNicolas Pitre  *
7*9ad9a52cSNicolas Pitre  * Common DAT related stuff
8*9ad9a52cSNicolas Pitre  */
9*9ad9a52cSNicolas Pitre 
10*9ad9a52cSNicolas Pitre #ifndef DAT_H
11*9ad9a52cSNicolas Pitre #define DAT_H
12*9ad9a52cSNicolas Pitre 
13*9ad9a52cSNicolas Pitre /* Global DAT flags */
14*9ad9a52cSNicolas Pitre #define DAT_0_I2C_DEVICE		W0_BIT_(31)
15*9ad9a52cSNicolas Pitre #define DAT_0_SIR_REJECT		W0_BIT_(13)
16*9ad9a52cSNicolas Pitre #define DAT_0_IBI_PAYLOAD		W0_BIT_(12)
17*9ad9a52cSNicolas Pitre 
18*9ad9a52cSNicolas Pitre struct hci_dat_ops {
19*9ad9a52cSNicolas Pitre 	int (*init)(struct i3c_hci *hci);
20*9ad9a52cSNicolas Pitre 	void (*cleanup)(struct i3c_hci *hci);
21*9ad9a52cSNicolas Pitre 	int (*alloc_entry)(struct i3c_hci *hci);
22*9ad9a52cSNicolas Pitre 	void (*free_entry)(struct i3c_hci *hci, unsigned int dat_idx);
23*9ad9a52cSNicolas Pitre 	void (*set_dynamic_addr)(struct i3c_hci *hci, unsigned int dat_idx, u8 addr);
24*9ad9a52cSNicolas Pitre 	void (*set_static_addr)(struct i3c_hci *hci, unsigned int dat_idx, u8 addr);
25*9ad9a52cSNicolas Pitre 	void (*set_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
26*9ad9a52cSNicolas Pitre 	void (*clear_flags)(struct i3c_hci *hci, unsigned int dat_idx, u32 w0, u32 w1);
27*9ad9a52cSNicolas Pitre 	int (*get_index)(struct i3c_hci *hci, u8 address);
28*9ad9a52cSNicolas Pitre };
29*9ad9a52cSNicolas Pitre 
30*9ad9a52cSNicolas Pitre extern const struct hci_dat_ops mipi_i3c_hci_dat_v1;
31*9ad9a52cSNicolas Pitre 
32*9ad9a52cSNicolas Pitre #endif
33