i3c_hci
int (*prep_ccc)(struct i3c_hci *hci, struct hci_xfer *xfer,
void (*prep_i3c_xfer)(struct i3c_hci *hci, struct i3c_dev_desc *dev,
void (*prep_i2c_xfer)(struct i3c_hci *hci, struct i2c_dev_desc *dev,
int (*perform_daa)(struct i3c_hci *hci);
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 int hci_cmd_v1_prep_ccc(struct i3c_hci *hci,
static void hci_cmd_v1_prep_i3c_xfer(struct i3c_hci *hci,
static void hci_cmd_v1_prep_i2c_xfer(struct i3c_hci *hci,
static int hci_cmd_v1_daa(struct i3c_hci *hci)
static int hci_cmd_v2_prep_ccc(struct i3c_hci *hci, struct hci_xfer *xfer,
static void hci_cmd_v2_prep_i3c_xfer(struct i3c_hci *hci,
static void hci_cmd_v2_prep_i2c_xfer(struct i3c_hci *hci,
static int hci_cmd_v2_daa(struct i3c_hci *hci)
static unsigned int get_i3c_rate_idx(struct i3c_hci *hci)
static unsigned int get_i2c_rate_idx(struct i3c_hci *hci)
static void hci_cmd_v2_prep_private_xfer(struct i3c_hci *hci,
struct i3c_hci *hci = platform_get_drvdata(pdev);
static inline struct i3c_hci *to_i3c_hci(struct i3c_master_controller *m)
return container_of(m, struct i3c_hci, master);
static void i3c_hci_set_master_dyn_addr(struct i3c_hci *hci)
struct i3c_hci *hci = to_i3c_hci(m);
static int i3c_hci_bus_disable(struct i3c_hci *hci)
static int i3c_hci_software_reset(struct i3c_hci *hci)
void i3c_hci_sync_irq_inactive(struct i3c_hci *hci)
struct i3c_hci *hci = to_i3c_hci(m);
void mipi_i3c_hci_resume(struct i3c_hci *hci)
void mipi_i3c_hci_pio_reset(struct i3c_hci *hci)
void mipi_i3c_hci_dct_index_reset(struct i3c_hci *hci)
int i3c_hci_process_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n)
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = to_i3c_hci(m);
struct i3c_hci *hci = dev_id;
static inline bool is_version_1_1_or_newer(struct i3c_hci *hci)
static int i3c_hci_set_io_mode(struct i3c_hci *hci, bool dma)
static int i3c_hci_reset_and_init(struct i3c_hci *hci)
struct i3c_hci *hci = dev_get_drvdata(dev);
struct i3c_hci *hci = dev_get_drvdata(dev);
struct i3c_hci *hci = dev_get_drvdata(dev);
struct i3c_hci *hci = dev_get_drvdata(dev);
struct i3c_hci *hci = dev_get_drvdata(dev);
static int i3c_hci_init(struct i3c_hci *hci)
struct i3c_hci *hci;
int (*init)(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);
void (*restore)(struct i3c_hci *hci);
static void hci_dat_v1_free_entry(struct i3c_hci *hci, unsigned int dat_idx)
static void hci_dat_v1_set_dynamic_addr(struct i3c_hci *hci,
static void hci_dat_v1_set_static_addr(struct i3c_hci *hci,
static void hci_dat_v1_set_flags(struct i3c_hci *hci, unsigned int dat_idx,
static void hci_dat_v1_clear_flags(struct i3c_hci *hci, unsigned int dat_idx,
static int hci_dat_v1_get_index(struct i3c_hci *hci, u8 dev_addr)
static void hci_dat_v1_restore(struct i3c_hci *hci)
static inline void hci_dat_w0_write(struct i3c_hci *hci, int i, u32 v)
static inline void hci_dat_w1_write(struct i3c_hci *hci, int i, u32 v)
static int hci_dat_v1_init(struct i3c_hci *hci)
static int hci_dat_v1_alloc_entry(struct i3c_hci *hci)
void i3c_hci_dct_get_val(struct i3c_hci *hci, unsigned int dct_idx,
void i3c_hci_dct_get_val(struct i3c_hci *hci, unsigned int dct_idx,
static void hci_dma_cleanup(struct i3c_hci *hci)
struct i3c_hci *hci = data;
static void hci_dma_init_rh(struct i3c_hci *hci, struct hci_rh_data *rh, int i)
static void hci_dma_init_rings(struct i3c_hci *hci)
static void hci_dma_suspend(struct i3c_hci *hci)
static void hci_dma_resume(struct i3c_hci *hci)
static int hci_dma_init(struct i3c_hci *hci)
static void hci_dma_unmap_xfer(struct i3c_hci *hci,
static int hci_dma_map_xfer_list(struct i3c_hci *hci, struct device *dev,
static int hci_dma_queue_xfer(struct i3c_hci *hci,
static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,
static int hci_dma_handle_error(struct i3c_hci *hci, struct hci_xfer *xfer_list, int n)
static void hci_dma_xfer_done(struct i3c_hci *hci, struct hci_rh_data *rh)
static int hci_dma_request_ibi(struct i3c_hci *hci, struct i3c_dev_desc *dev,
static void hci_dma_free_ibi(struct i3c_hci *hci, struct i3c_dev_desc *dev)
static void hci_dma_recycle_ibi_slot(struct i3c_hci *hci,
static void hci_dma_process_ibi(struct i3c_hci *hci, struct hci_rh_data *rh)
static bool hci_dma_irq_handler(struct i3c_hci *hci)
static int hci_extcap_auto_command(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_debug(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_scheduled_cmd(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_non_curr_master(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_ccc_resp_conf(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_global_DAT(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_multilane(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_ncm_multilane(struct i3c_hci *hci, void __iomem *base)
int (*parser)(struct i3c_hci *hci, void __iomem *base);
static int hci_extcap_vendor_NXP(struct i3c_hci *hci, void __iomem *base)
int (*parser)(struct i3c_hci *hci, void __iomem *base);
static int hci_extcap_vendor_specific(struct i3c_hci *hci, void __iomem *base,
static int hci_extcap_hardware_id(struct i3c_hci *hci, void __iomem *base)
int i3c_hci_parse_ext_caps(struct i3c_hci *hci)
static int hci_extcap_master_config(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_multi_bus(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_xfer_modes(struct i3c_hci *hci, void __iomem *base)
static int hci_extcap_xfer_rates(struct i3c_hci *hci, void __iomem *base)
int i3c_hci_parse_ext_caps(struct i3c_hci *hci);
bool (*irq_handler)(struct i3c_hci *hci);
int (*queue_xfer)(struct i3c_hci *hci, struct hci_xfer *xfer, int n);
bool (*dequeue_xfer)(struct i3c_hci *hci, struct hci_xfer *xfer, int n);
int (*handle_error)(struct i3c_hci *hci, struct hci_xfer *xfer, int n);
int (*request_ibi)(struct i3c_hci *hci, struct i3c_dev_desc *dev,
void (*free_ibi)(struct i3c_hci *hci, struct i3c_dev_desc *dev);
void (*recycle_ibi_slot)(struct i3c_hci *hci, struct i3c_dev_desc *dev,
int (*init)(struct i3c_hci *hci);
void (*cleanup)(struct i3c_hci *hci);
void (*suspend)(struct i3c_hci *hci);
void (*resume)(struct i3c_hci *hci);
void mipi_i3c_hci_resume(struct i3c_hci *hci);
void mipi_i3c_hci_pio_reset(struct i3c_hci *hci);
void mipi_i3c_hci_dct_index_reset(struct i3c_hci *hci);
void amd_set_od_pp_timing(struct i3c_hci *hci);
void amd_set_resp_buf_thld(struct i3c_hci *hci);
void i3c_hci_sync_irq_inactive(struct i3c_hci *hci);
int i3c_hci_process_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n);
void amd_set_od_pp_timing(struct i3c_hci *hci)
void amd_set_resp_buf_thld(struct i3c_hci *hci)
i3c_hci_addr_to_dev(struct i3c_hci *hci, unsigned int addr)
static void hci_pio_recycle_ibi_slot(struct i3c_hci *hci,
static bool hci_pio_irq_handler(struct i3c_hci *hci)
static void __hci_pio_init(struct i3c_hci *hci, u32 *size_val_ptr)
static void hci_pio_suspend(struct i3c_hci *hci)
static void hci_pio_resume(struct i3c_hci *hci)
static int hci_pio_init(struct i3c_hci *hci)
static void hci_pio_cleanup(struct i3c_hci *hci)
static void hci_pio_write_cmd(struct i3c_hci *hci, struct hci_xfer *xfer)
static bool hci_pio_do_rx(struct i3c_hci *hci, struct hci_pio_data *pio)
static void hci_pio_do_trailing_rx(struct i3c_hci *hci,
static bool hci_pio_do_tx(struct i3c_hci *hci, struct hci_pio_data *pio)
static bool hci_pio_process_rx(struct i3c_hci *hci, struct hci_pio_data *pio)
static bool hci_pio_process_tx(struct i3c_hci *hci, struct hci_pio_data *pio)
static void hci_pio_queue_data(struct i3c_hci *hci, struct hci_pio_data *pio)
static void hci_pio_push_to_next_rx(struct i3c_hci *hci, struct hci_xfer *xfer,
static void hci_pio_err(struct i3c_hci *hci, struct hci_pio_data *pio,
static bool hci_pio_process_resp(struct i3c_hci *hci, struct hci_pio_data *pio)
static void hci_pio_queue_resp(struct i3c_hci *hci, struct hci_pio_data *pio)
static bool hci_pio_process_cmd(struct i3c_hci *hci, struct hci_pio_data *pio)
static int hci_pio_queue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n)
static bool hci_pio_dequeue_xfer_common(struct i3c_hci *hci,
static bool hci_pio_dequeue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n)
static void hci_pio_err(struct i3c_hci *hci, struct hci_pio_data *pio,
static void hci_pio_set_ibi_thresh(struct i3c_hci *hci,
static bool hci_pio_get_ibi_segment(struct i3c_hci *hci,
static bool hci_pio_prep_new_ibi(struct i3c_hci *hci, struct hci_pio_data *pio)
static void hci_pio_free_ibi_slot(struct i3c_hci *hci, struct hci_pio_data *pio)
static bool hci_pio_process_ibi(struct i3c_hci *hci, struct hci_pio_data *pio)
static int hci_pio_request_ibi(struct i3c_hci *hci, struct i3c_dev_desc *dev,
static void hci_pio_free_ibi(struct i3c_hci *hci, struct i3c_dev_desc *dev)