Lines Matching refs:config
57 struct spear_pcie_gadget_config config; member
62 ssize_t (*show)(struct spear_pcie_gadget_config *config,
64 ssize_t (*store)(struct spear_pcie_gadget_config *config,
89 static void spear_dbi_read_reg(struct spear_pcie_gadget_config *config, in spear_dbi_read_reg() argument
92 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in spear_dbi_read_reg()
98 va_address = (ulong)config->va_dbi_base + (where & ~0x3); in spear_dbi_read_reg()
111 static void spear_dbi_write_reg(struct spear_pcie_gadget_config *config, in spear_dbi_write_reg() argument
114 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in spear_dbi_write_reg()
120 va_address = (ulong)config->va_dbi_base + (where & ~0x3); in spear_dbi_write_reg()
135 static int pci_find_own_next_cap_ttl(struct spear_pcie_gadget_config *config, in pci_find_own_next_cap_ttl() argument
141 spear_dbi_read_reg(config, pos, 1, &pos); in pci_find_own_next_cap_ttl()
145 spear_dbi_read_reg(config, pos + PCI_CAP_LIST_ID, 1, &id); in pci_find_own_next_cap_ttl()
155 static int pci_find_own_next_cap(struct spear_pcie_gadget_config *config, in pci_find_own_next_cap() argument
160 return pci_find_own_next_cap_ttl(config, pos, cap, &ttl); in pci_find_own_next_cap()
163 static int pci_find_own_cap_start(struct spear_pcie_gadget_config *config, in pci_find_own_cap_start() argument
168 spear_dbi_read_reg(config, PCI_STATUS, 2, &status); in pci_find_own_cap_start()
200 static int pci_find_own_capability(struct spear_pcie_gadget_config *config, in pci_find_own_capability() argument
206 spear_dbi_read_reg(config, PCI_HEADER_TYPE, 1, &hdr_type); in pci_find_own_capability()
208 pos = pci_find_own_cap_start(config, hdr_type); in pci_find_own_capability()
210 pos = pci_find_own_next_cap(config, pos, cap); in pci_find_own_capability()
224 struct spear_pcie_gadget_config *config, in pcie_gadget_show_link() argument
227 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_show_link()
236 struct spear_pcie_gadget_config *config, in pcie_gadget_store_link() argument
239 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_store_link()
254 struct spear_pcie_gadget_config *config, in pcie_gadget_show_int_type() argument
257 return sprintf(buf, "%s", config->int_type); in pcie_gadget_show_int_type()
261 struct spear_pcie_gadget_config *config, in pcie_gadget_store_int_type() argument
268 spear_dbi_write_reg(config, PCI_INTERRUPT_LINE, 1, 1); in pcie_gadget_store_int_type()
271 vector = config->requested_msi; in pcie_gadget_store_int_type()
277 spear_dbi_write_reg(config, PCI_INTERRUPT_LINE, 1, 0); in pcie_gadget_store_int_type()
278 cap = pci_find_own_capability(config, PCI_CAP_ID_MSI); in pcie_gadget_store_int_type()
279 spear_dbi_read_reg(config, cap + PCI_MSI_FLAGS, 1, &flags); in pcie_gadget_store_int_type()
282 spear_dbi_write_reg(config, cap + PCI_MSI_FLAGS, 1, flags); in pcie_gadget_store_int_type()
286 strcpy(config->int_type, buf); in pcie_gadget_store_int_type()
292 struct spear_pcie_gadget_config *config, in pcie_gadget_show_no_of_msi() argument
295 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_show_no_of_msi()
303 cap = pci_find_own_capability(config, PCI_CAP_ID_MSI); in pcie_gadget_show_no_of_msi()
304 spear_dbi_read_reg(config, cap + PCI_MSI_FLAGS, 1, &flags); in pcie_gadget_show_no_of_msi()
311 config->configured_msi = vector; in pcie_gadget_show_no_of_msi()
317 struct spear_pcie_gadget_config *config, in pcie_gadget_store_no_of_msi() argument
322 ret = kstrtoul(buf, 0, &config->requested_msi); in pcie_gadget_store_no_of_msi()
326 if (config->requested_msi > 32) in pcie_gadget_store_no_of_msi()
327 config->requested_msi = 32; in pcie_gadget_store_no_of_msi()
333 struct spear_pcie_gadget_config *config, in pcie_gadget_store_inta() argument
336 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_store_inta()
355 struct spear_pcie_gadget_config *config, in pcie_gadget_store_send_msi() argument
358 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_store_send_msi()
367 if (!config->configured_msi) in pcie_gadget_store_send_msi()
370 if (vector >= config->configured_msi) in pcie_gadget_store_send_msi()
392 struct spear_pcie_gadget_config *config, in pcie_gadget_show_vendor_id() argument
397 spear_dbi_read_reg(config, PCI_VENDOR_ID, 2, &id); in pcie_gadget_show_vendor_id()
403 struct spear_pcie_gadget_config *config, in pcie_gadget_store_vendor_id() argument
413 spear_dbi_write_reg(config, PCI_VENDOR_ID, 2, id); in pcie_gadget_store_vendor_id()
419 struct spear_pcie_gadget_config *config, in pcie_gadget_show_device_id() argument
424 spear_dbi_read_reg(config, PCI_DEVICE_ID, 2, &id); in pcie_gadget_show_device_id()
430 struct spear_pcie_gadget_config *config, in pcie_gadget_store_device_id() argument
440 spear_dbi_write_reg(config, PCI_DEVICE_ID, 2, id); in pcie_gadget_store_device_id()
446 struct spear_pcie_gadget_config *config, in pcie_gadget_show_bar0_size() argument
449 return sprintf(buf, "%lx", config->bar0_size); in pcie_gadget_show_bar0_size()
453 struct spear_pcie_gadget_config *config, in pcie_gadget_store_bar0_size() argument
486 config->bar0_size = size; in pcie_gadget_store_bar0_size()
487 spear_dbi_write_reg(config, PCIE_BAR0_MASK_REG, 4, size - 1); in pcie_gadget_store_bar0_size()
493 struct spear_pcie_gadget_config *config, in pcie_gadget_show_bar0_address() argument
496 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_show_bar0_address()
504 struct spear_pcie_gadget_config *config, in pcie_gadget_store_bar0_address() argument
507 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in pcie_gadget_store_bar0_address()
515 address &= ~(config->bar0_size - 1); in pcie_gadget_store_bar0_address()
516 if (config->va_bar0_address) in pcie_gadget_store_bar0_address()
517 iounmap(config->va_bar0_address); in pcie_gadget_store_bar0_address()
518 config->va_bar0_address = ioremap(address, config->bar0_size); in pcie_gadget_store_bar0_address()
519 if (!config->va_bar0_address) in pcie_gadget_store_bar0_address()
528 struct spear_pcie_gadget_config *config, in pcie_gadget_show_bar0_rw_offset() argument
531 return sprintf(buf, "%lx", config->bar0_rw_offset); in pcie_gadget_show_bar0_rw_offset()
535 struct spear_pcie_gadget_config *config, in pcie_gadget_store_bar0_rw_offset() argument
548 config->bar0_rw_offset = offset; in pcie_gadget_store_bar0_rw_offset()
554 struct spear_pcie_gadget_config *config, in pcie_gadget_show_bar0_data() argument
559 if (!config->va_bar0_address) in pcie_gadget_show_bar0_data()
562 data = readl((ulong)config->va_bar0_address + config->bar0_rw_offset); in pcie_gadget_show_bar0_data()
568 struct spear_pcie_gadget_config *config, in pcie_gadget_store_bar0_data() argument
578 if (!config->va_bar0_address) in pcie_gadget_store_bar0_data()
581 writel(data, (ulong)config->va_bar0_address + config->bar0_rw_offset); in pcie_gadget_store_bar0_data()
650 ret = t_attr->show(&target->config, buf); in pcie_gadget_target_attr_show()
665 ret = t_attr->store(&target->config, buf, count); in pcie_gadget_target_attr_store()
680 static void spear13xx_pcie_device_init(struct spear_pcie_gadget_config *config) in spear13xx_pcie_device_init() argument
682 struct pcie_app_reg __iomem *app_reg = config->va_app_base; in spear13xx_pcie_device_init()
686 writel(config->base, &app_reg->in0_mem_addr_start); in spear13xx_pcie_device_init()
712 config->bar0_size = INBOUND_ADDR_MASK + 1; in spear13xx_pcie_device_init()
713 spear_dbi_write_reg(config, PCIE_BAR0_MASK_REG, 4, INBOUND_ADDR_MASK); in spear13xx_pcie_device_init()
714 spear_dbi_write_reg(config, PCI_BASE_ADDRESS_0, 4, 0xC); in spear13xx_pcie_device_init()
715 config->va_bar0_address = ioremap(SPEAR13XX_SYSRAM1_BASE, in spear13xx_pcie_device_init()
716 config->bar0_size); in spear13xx_pcie_device_init()
733 spear_dbi_write_reg(config, PCI_INTERRUPT_LINE, 1, 1); in spear13xx_pcie_device_init()
743 struct spear_pcie_gadget_config *config; in spear_pcie_gadget_probe() local
756 config = &target->config; in spear_pcie_gadget_probe()
760 config->va_app_base = devm_ioremap_resource(&pdev->dev, res0); in spear_pcie_gadget_probe()
761 if (IS_ERR(config->va_app_base)) { in spear_pcie_gadget_probe()
763 return PTR_ERR(config->va_app_base); in spear_pcie_gadget_probe()
768 config->base = (void __iomem *)res1->start; in spear_pcie_gadget_probe()
770 config->va_dbi_base = devm_ioremap_resource(&pdev->dev, res1); in spear_pcie_gadget_probe()
771 if (IS_ERR(config->va_dbi_base)) { in spear_pcie_gadget_probe()
773 return PTR_ERR(config->va_dbi_base); in spear_pcie_gadget_probe()
837 spear13xx_pcie_device_init(config); in spear_pcie_gadget_probe()