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