root/arch/mips/include/asm/vr41xx/pci.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  12 struct pci_master_address_conversion {
  13         uint32_t bus_base_address;
  14         uint32_t address_mask;
  15         uint32_t pci_base_address;
  16 };
  17 
  18 struct pci_target_address_conversion {
  19         uint32_t address_mask;
  20         uint32_t bus_base_address;
  21 };
  22 
  23 typedef enum {
  24         CANNOT_LOCK_FROM_DEVICE,
  25         CAN_LOCK_FROM_DEVICE,
  26 } pci_exclusive_access_t;
  27 
  28 struct pci_mailbox_address {
  29         uint32_t base_address;
  30 };
  31 
  32 struct pci_target_address_window {
  33         uint32_t base_address;
  34 };
  35 
  36 typedef 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 
  42 typedef enum {
  43         PCI_TAKE_AWAY_GNT_DISABLE,
  44         PCI_TAKE_AWAY_GNT_ENABLE,
  45 } pci_take_away_gnt_mode_t;
  46 
  47 struct 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 
  75 extern void vr41xx_pciu_setup(struct pci_controller_unit_setup *setup);
  76 
  77 #endif /* __NEC_VR41XX_PCI_H */

/* [<][>][^][v][top][bottom][index][help] */