Lines Matching refs:pdev
136 static void set_ctrl_reg_req_en(struct pci_dev *pdev, u8 req_type) in set_ctrl_reg_req_en() argument
140 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, ®); in set_ctrl_reg_req_en()
145 pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg); in set_ctrl_reg_req_en()
148 static u8 get_st_modes(struct pci_dev *pdev) in get_st_modes() argument
152 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CAP, ®); in get_st_modes()
158 static u32 get_st_table_loc(struct pci_dev *pdev) in get_st_table_loc() argument
162 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CAP, ®); in get_st_table_loc()
171 u16 pcie_tph_get_st_table_size(struct pci_dev *pdev) in pcie_tph_get_st_table_size() argument
177 loc = get_st_table_loc(pdev); in pcie_tph_get_st_table_size()
184 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CAP, ®); in pcie_tph_get_st_table_size()
191 static u8 get_rp_completer_type(struct pci_dev *pdev) in get_rp_completer_type() argument
197 rp = pcie_find_root_port(pdev); in get_rp_completer_type()
209 static int write_tag_to_st_table(struct pci_dev *pdev, int index, u16 tag) in write_tag_to_st_table() argument
215 st_table_size = pcie_tph_get_st_table_size(pdev); in write_tag_to_st_table()
219 offset = pdev->tph_cap + PCI_TPH_BASE_SIZEOF + index * sizeof(u16); in write_tag_to_st_table()
221 return pci_write_config_word(pdev, offset, tag); in write_tag_to_st_table()
237 int pcie_tph_get_cpu_st(struct pci_dev *pdev, enum tph_mem_type mem_type, in pcie_tph_get_cpu_st() argument
245 rp = pcie_find_root_port(pdev); in pcie_tph_get_cpu_st()
256 *tag = tph_extract_tag(mem_type, pdev->tph_req_type, &info); in pcie_tph_get_cpu_st()
258 pci_dbg(pdev, "get steering tag: mem_type=%s, cpu_uid=%d, tag=%#04x\n", in pcie_tph_get_cpu_st()
281 int pcie_tph_set_st_entry(struct pci_dev *pdev, unsigned int index, u16 tag) in pcie_tph_set_st_entry() argument
286 if (!pdev->tph_cap) in pcie_tph_set_st_entry()
289 if (!pdev->tph_enabled) in pcie_tph_set_st_entry()
293 if (pdev->tph_mode == PCI_TPH_ST_NS_MODE) in pcie_tph_set_st_entry()
300 set_ctrl_reg_req_en(pdev, PCI_TPH_REQ_DISABLE); in pcie_tph_set_st_entry()
302 loc = get_st_table_loc(pdev); in pcie_tph_set_st_entry()
308 err = pci_msix_write_tph_tag(pdev, index, tag); in pcie_tph_set_st_entry()
311 err = write_tag_to_st_table(pdev, index, tag); in pcie_tph_set_st_entry()
318 pcie_disable_tph(pdev); in pcie_tph_set_st_entry()
322 set_ctrl_reg_req_en(pdev, pdev->tph_req_type); in pcie_tph_set_st_entry()
324 pci_dbg(pdev, "set steering tag: %s table, index=%d, tag=%#04x\n", in pcie_tph_set_st_entry()
337 void pcie_disable_tph(struct pci_dev *pdev) in pcie_disable_tph() argument
339 if (!pdev->tph_cap) in pcie_disable_tph()
342 if (!pdev->tph_enabled) in pcie_disable_tph()
345 pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, 0); in pcie_disable_tph()
347 pdev->tph_mode = 0; in pcie_disable_tph()
348 pdev->tph_req_type = 0; in pcie_disable_tph()
349 pdev->tph_enabled = 0; in pcie_disable_tph()
369 int pcie_enable_tph(struct pci_dev *pdev, int mode) in pcie_enable_tph() argument
379 if (!pdev->tph_cap) in pcie_enable_tph()
382 if (pdev->tph_enabled) in pcie_enable_tph()
387 dev_modes = get_st_modes(pdev); in pcie_enable_tph()
391 pdev->tph_mode = mode; in pcie_enable_tph()
394 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CAP, ®); in pcie_enable_tph()
396 pdev->tph_req_type = PCI_TPH_REQ_EXT_TPH; in pcie_enable_tph()
398 pdev->tph_req_type = PCI_TPH_REQ_TPH_ONLY; in pcie_enable_tph()
400 rp_req_type = get_rp_completer_type(pdev); in pcie_enable_tph()
403 pdev->tph_req_type = min(pdev->tph_req_type, rp_req_type); in pcie_enable_tph()
405 if (pdev->tph_req_type == PCI_TPH_REQ_DISABLE) in pcie_enable_tph()
409 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, ®); in pcie_enable_tph()
412 reg |= FIELD_PREP(PCI_TPH_CTRL_MODE_SEL_MASK, pdev->tph_mode); in pcie_enable_tph()
415 reg |= FIELD_PREP(PCI_TPH_CTRL_REQ_EN_MASK, pdev->tph_req_type); in pcie_enable_tph()
417 pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, reg); in pcie_enable_tph()
419 pdev->tph_enabled = 1; in pcie_enable_tph()
425 void pci_restore_tph_state(struct pci_dev *pdev) in pci_restore_tph_state() argument
432 if (!pdev->tph_cap) in pci_restore_tph_state()
435 if (!pdev->tph_enabled) in pci_restore_tph_state()
438 save_state = pci_find_saved_ext_cap(pdev, PCI_EXT_CAP_ID_TPH); in pci_restore_tph_state()
444 pci_write_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, *cap++); in pci_restore_tph_state()
447 num_entries = pcie_tph_get_st_table_size(pdev); in pci_restore_tph_state()
449 pci_write_config_word(pdev, pdev->tph_cap + offset, in pci_restore_tph_state()
455 void pci_save_tph_state(struct pci_dev *pdev) in pci_save_tph_state() argument
462 if (!pdev->tph_cap) in pci_save_tph_state()
465 if (!pdev->tph_enabled) in pci_save_tph_state()
468 save_state = pci_find_saved_ext_cap(pdev, PCI_EXT_CAP_ID_TPH); in pci_save_tph_state()
474 pci_read_config_dword(pdev, pdev->tph_cap + PCI_TPH_CTRL, cap++); in pci_save_tph_state()
479 num_entries = pcie_tph_get_st_table_size(pdev); in pci_save_tph_state()
481 pci_read_config_word(pdev, pdev->tph_cap + offset, in pci_save_tph_state()
494 void pci_tph_init(struct pci_dev *pdev) in pci_tph_init() argument
499 pdev->tph_cap = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_TPH); in pci_tph_init()
500 if (!pdev->tph_cap) in pci_tph_init()
503 num_entries = pcie_tph_get_st_table_size(pdev); in pci_tph_init()
505 pci_add_ext_cap_save_buffer(pdev, PCI_EXT_CAP_ID_TPH, save_size); in pci_tph_init()