Lines Matching refs:hci

24 static int hci_extcap_hardware_id(struct i3c_hci *hci, void __iomem *base)  in hci_extcap_hardware_id()  argument
26 hci->vendor_mipi_id = readl(base + 0x04); in hci_extcap_hardware_id()
27 hci->vendor_version_id = readl(base + 0x08); in hci_extcap_hardware_id()
28 hci->vendor_product_id = readl(base + 0x0c); in hci_extcap_hardware_id()
30 dev_info(&hci->master.dev, "vendor MIPI ID: %#x\n", hci->vendor_mipi_id); in hci_extcap_hardware_id()
31 dev_info(&hci->master.dev, "vendor version ID: %#x\n", hci->vendor_version_id); in hci_extcap_hardware_id()
32 dev_info(&hci->master.dev, "vendor product ID: %#x\n", hci->vendor_product_id); in hci_extcap_hardware_id()
35 switch (hci->vendor_mipi_id) { in hci_extcap_hardware_id()
37 hci->quirks |= HCI_QUIRK_RAW_CCC; in hci_extcap_hardware_id()
45 static int hci_extcap_master_config(struct i3c_hci *hci, void __iomem *base) in hci_extcap_master_config() argument
52 dev_info(&hci->master.dev, "operation mode: %s\n", functionality[operation_mode]); in hci_extcap_master_config()
55 dev_err(&hci->master.dev, "only master mode is currently supported\n"); in hci_extcap_master_config()
59 static int hci_extcap_multi_bus(struct i3c_hci *hci, void __iomem *base) in hci_extcap_multi_bus() argument
64 dev_info(&hci->master.dev, "%d bus instances\n", count); in hci_extcap_multi_bus()
68 static int hci_extcap_xfer_modes(struct i3c_hci *hci, void __iomem *base) in hci_extcap_xfer_modes() argument
74 dev_info(&hci->master.dev, "transfer mode table has %d entries\n", in hci_extcap_xfer_modes()
88 static int hci_extcap_xfer_rates(struct i3c_hci *hci, void __iomem *base) in hci_extcap_xfer_rates() argument
97 dev_info(&hci->master.dev, "available data rates:\n"); in hci_extcap_xfer_rates()
104 dev_info(&hci->master.dev, "rate %d for %s = %d kHz\n", in hci_extcap_xfer_rates()
116 static int hci_extcap_auto_command(struct i3c_hci *hci, void __iomem *base) in hci_extcap_auto_command() argument
123 dev_info(&hci->master.dev, "%d/%d active auto-command entries\n", in hci_extcap_auto_command()
126 hci->AUTOCMD_regs = base; in hci_extcap_auto_command()
130 static int hci_extcap_debug(struct i3c_hci *hci, void __iomem *base) in hci_extcap_debug() argument
132 dev_info(&hci->master.dev, "debug registers present\n"); in hci_extcap_debug()
133 hci->DEBUG_regs = base; in hci_extcap_debug()
137 static int hci_extcap_scheduled_cmd(struct i3c_hci *hci, void __iomem *base) in hci_extcap_scheduled_cmd() argument
139 dev_info(&hci->master.dev, "scheduled commands available\n"); in hci_extcap_scheduled_cmd()
144 static int hci_extcap_non_curr_master(struct i3c_hci *hci, void __iomem *base) in hci_extcap_non_curr_master() argument
146 dev_info(&hci->master.dev, "Non-Current Master support available\n"); in hci_extcap_non_curr_master()
151 static int hci_extcap_ccc_resp_conf(struct i3c_hci *hci, void __iomem *base) in hci_extcap_ccc_resp_conf() argument
153 dev_info(&hci->master.dev, "CCC Response Configuration available\n"); in hci_extcap_ccc_resp_conf()
157 static int hci_extcap_global_DAT(struct i3c_hci *hci, void __iomem *base) in hci_extcap_global_DAT() argument
159 dev_info(&hci->master.dev, "Global DAT available\n"); in hci_extcap_global_DAT()
163 static int hci_extcap_multilane(struct i3c_hci *hci, void __iomem *base) in hci_extcap_multilane() argument
165 dev_info(&hci->master.dev, "Master Multi-Lane support available\n"); in hci_extcap_multilane()
169 static int hci_extcap_ncm_multilane(struct i3c_hci *hci, void __iomem *base) in hci_extcap_ncm_multilane() argument
171 dev_info(&hci->master.dev, "NCM Multi-Lane support available\n"); in hci_extcap_ncm_multilane()
178 int (*parser)(struct i3c_hci *hci, void __iomem *base);
201 static int hci_extcap_vendor_NXP(struct i3c_hci *hci, void __iomem *base) in hci_extcap_vendor_NXP() argument
203 hci->vendor_data = (__force void *)base; in hci_extcap_vendor_NXP()
204 dev_info(&hci->master.dev, "Build Date Info = %#x\n", readl(base + 1*4)); in hci_extcap_vendor_NXP()
214 int (*parser)(struct i3c_hci *hci, void __iomem *base);
226 static int hci_extcap_vendor_specific(struct i3c_hci *hci, void __iomem *base, in hci_extcap_vendor_specific() argument
234 if (vendor_ext_caps[i].vendor == hci->vendor_mipi_id && in hci_extcap_vendor_specific()
242 dev_notice(&hci->master.dev, in hci_extcap_vendor_specific()
244 cap_id, hci->vendor_mipi_id); in hci_extcap_vendor_specific()
248 dev_err(&hci->master.dev, in hci_extcap_vendor_specific()
253 return vendor_cap_entry->parser(hci, base); in hci_extcap_vendor_specific()
256 int i3c_hci_parse_ext_caps(struct i3c_hci *hci) in i3c_hci_parse_ext_caps() argument
258 void __iomem *curr_cap = hci->EXTCAPS_regs; in i3c_hci_parse_ext_caps()
275 dev_err(&hci->master.dev, in i3c_hci_parse_ext_caps()
283 err = hci_extcap_vendor_specific(hci, curr_cap, in i3c_hci_parse_ext_caps()
296 dev_notice(&hci->master.dev, in i3c_hci_parse_ext_caps()
299 dev_err(&hci->master.dev, in i3c_hci_parse_ext_caps()
304 err = cap_entry->parser(hci, curr_cap); in i3c_hci_parse_ext_caps()