18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Include file for NEC VR4100 series PCI Control Unit. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2004-2005 Yoichi Yuasa <yuasa@linux-mips.org> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef __NEC_VR41XX_PCI_H 88c2ecf20Sopenharmony_ci#define __NEC_VR41XX_PCI_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define PCI_MASTER_ADDRESS_MASK 0x7fffffffU 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistruct pci_master_address_conversion { 138c2ecf20Sopenharmony_ci uint32_t bus_base_address; 148c2ecf20Sopenharmony_ci uint32_t address_mask; 158c2ecf20Sopenharmony_ci uint32_t pci_base_address; 168c2ecf20Sopenharmony_ci}; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistruct pci_target_address_conversion { 198c2ecf20Sopenharmony_ci uint32_t address_mask; 208c2ecf20Sopenharmony_ci uint32_t bus_base_address; 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_citypedef enum { 248c2ecf20Sopenharmony_ci CANNOT_LOCK_FROM_DEVICE, 258c2ecf20Sopenharmony_ci CAN_LOCK_FROM_DEVICE, 268c2ecf20Sopenharmony_ci} pci_exclusive_access_t; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cistruct pci_mailbox_address { 298c2ecf20Sopenharmony_ci uint32_t base_address; 308c2ecf20Sopenharmony_ci}; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistruct pci_target_address_window { 338c2ecf20Sopenharmony_ci uint32_t base_address; 348c2ecf20Sopenharmony_ci}; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_citypedef enum { 378c2ecf20Sopenharmony_ci PCI_ARBITRATION_MODE_FAIR, 388c2ecf20Sopenharmony_ci PCI_ARBITRATION_MODE_ALTERNATE_0, 398c2ecf20Sopenharmony_ci PCI_ARBITRATION_MODE_ALTERNATE_B, 408c2ecf20Sopenharmony_ci} pci_arbiter_priority_control_t; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_citypedef enum { 438c2ecf20Sopenharmony_ci PCI_TAKE_AWAY_GNT_DISABLE, 448c2ecf20Sopenharmony_ci PCI_TAKE_AWAY_GNT_ENABLE, 458c2ecf20Sopenharmony_ci} pci_take_away_gnt_mode_t; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistruct pci_controller_unit_setup { 488c2ecf20Sopenharmony_ci struct pci_master_address_conversion *master_memory1; 498c2ecf20Sopenharmony_ci struct pci_master_address_conversion *master_memory2; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci struct pci_target_address_conversion *target_memory1; 528c2ecf20Sopenharmony_ci struct pci_target_address_conversion *target_memory2; 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci struct pci_master_address_conversion *master_io; 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci pci_exclusive_access_t exclusive_access; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci uint32_t pci_clock_max; 598c2ecf20Sopenharmony_ci uint8_t wait_time_limit_from_irdy_to_trdy; /* Only VR4122 is supported */ 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci struct pci_mailbox_address *mailbox; 628c2ecf20Sopenharmony_ci struct pci_target_address_window *target_window1; 638c2ecf20Sopenharmony_ci struct pci_target_address_window *target_window2; 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci uint8_t master_latency_timer; 668c2ecf20Sopenharmony_ci uint8_t retry_limit; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci pci_arbiter_priority_control_t arbiter_priority_control; 698c2ecf20Sopenharmony_ci pci_take_away_gnt_mode_t take_away_gnt_mode; 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci struct resource *mem_resource; 728c2ecf20Sopenharmony_ci struct resource *io_resource; 738c2ecf20Sopenharmony_ci}; 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciextern void vr41xx_pciu_setup(struct pci_controller_unit_setup *setup); 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci#endif /* __NEC_VR41XX_PCI_H */ 78