linux/arch/mips/include/asm/vr41xx/pci.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 *  Include file for NEC VR4100 series PCI Control Unit.
   4 *
   5 *  Copyright (C) 2004-2005  Yoichi Yuasa <yuasa@linux-mips.org>
   6 */
   7#ifndef __NEC_VR41XX_PCI_H
   8#define __NEC_VR41XX_PCI_H
   9
  10#define PCI_MASTER_ADDRESS_MASK 0x7fffffffU
  11
  12struct pci_master_address_conversion {
  13        uint32_t bus_base_address;
  14        uint32_t address_mask;
  15        uint32_t pci_base_address;
  16};
  17
  18struct pci_target_address_conversion {
  19        uint32_t address_mask;
  20        uint32_t bus_base_address;
  21};
  22
  23typedef enum {
  24        CANNOT_LOCK_FROM_DEVICE,
  25        CAN_LOCK_FROM_DEVICE,
  26} pci_exclusive_access_t;
  27
  28struct pci_mailbox_address {
  29        uint32_t base_address;
  30};
  31
  32struct pci_target_address_window {
  33        uint32_t base_address;
  34};
  35
  36typedef enum {
  37        PCI_ARBITRATION_MODE_FAIR,
  38        PCI_ARBITRATION_MODE_ALTERNATE_0,
  39        PCI_ARBITRATION_MODE_ALTERNATE_B,
  40} pci_arbiter_priority_control_t;
  41
  42typedef enum {
  43        PCI_TAKE_AWAY_GNT_DISABLE,
  44        PCI_TAKE_AWAY_GNT_ENABLE,
  45} pci_take_away_gnt_mode_t;
  46
  47struct pci_controller_unit_setup {
  48        struct pci_master_address_conversion *master_memory1;
  49        struct pci_master_address_conversion *master_memory2;
  50
  51        struct pci_target_address_conversion *target_memory1;
  52        struct pci_target_address_conversion *target_memory2;
  53
  54        struct pci_master_address_conversion *master_io;
  55
  56        pci_exclusive_access_t exclusive_access;
  57
  58        uint32_t pci_clock_max;
  59        uint8_t wait_time_limit_from_irdy_to_trdy;      /* Only VR4122 is supported */
  60
  61        struct pci_mailbox_address *mailbox;
  62        struct pci_target_address_window *target_window1;
  63        struct pci_target_address_window *target_window2;
  64
  65        uint8_t master_latency_timer;
  66        uint8_t retry_limit;
  67
  68        pci_arbiter_priority_control_t arbiter_priority_control;
  69        pci_take_away_gnt_mode_t take_away_gnt_mode;
  70
  71        struct resource *mem_resource;
  72        struct resource *io_resource;
  73};
  74
  75extern void vr41xx_pciu_setup(struct pci_controller_unit_setup *setup);
  76
  77#endif /* __NEC_VR41XX_PCI_H */
  78