home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-mips / vr41xx / pci.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.5 KB  |  91 lines

  1. /*
  2.  *  Include file for NEC VR4100 series PCI Control Unit.
  3.  *
  4.  *  Copyright (C) 2004-2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  5.  *
  6.  *  This program is free software; you can redistribute it and/or modify
  7.  *  it under the terms of the GNU General Public License as published by
  8.  *  the Free Software Foundation; either version 2 of the License, or
  9.  *  (at your option) any later version.
  10.  *
  11.  *  This program is distributed in the hope that it will be useful,
  12.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  *  GNU General Public License for more details.
  15.  *
  16.  *  You should have received a copy of the GNU General Public License
  17.  *  along with this program; if not, write to the Free Software
  18.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  */
  20. #ifndef __NEC_VR41XX_PCI_H
  21. #define __NEC_VR41XX_PCI_H
  22.  
  23. #define PCI_MASTER_ADDRESS_MASK    0x7fffffffU
  24.  
  25. struct pci_master_address_conversion {
  26.     uint32_t bus_base_address;
  27.     uint32_t address_mask;
  28.     uint32_t pci_base_address;
  29. };
  30.  
  31. struct pci_target_address_conversion {
  32.     uint32_t address_mask;
  33.     uint32_t bus_base_address;
  34. };
  35.  
  36. typedef enum {
  37.     CANNOT_LOCK_FROM_DEVICE,
  38.     CAN_LOCK_FROM_DEVICE,
  39. } pci_exclusive_access_t;
  40.  
  41. struct pci_mailbox_address {
  42.     uint32_t base_address;
  43. };
  44.  
  45. struct pci_target_address_window {
  46.     uint32_t base_address;
  47. };
  48.  
  49. typedef enum {
  50.     PCI_ARBITRATION_MODE_FAIR,
  51.     PCI_ARBITRATION_MODE_ALTERNATE_0,
  52.     PCI_ARBITRATION_MODE_ALTERNATE_B,
  53. } pci_arbiter_priority_control_t;
  54.  
  55. typedef enum {
  56.     PCI_TAKE_AWAY_GNT_DISABLE,
  57.     PCI_TAKE_AWAY_GNT_ENABLE,
  58. } pci_take_away_gnt_mode_t;
  59.  
  60. struct pci_controller_unit_setup {
  61.     struct pci_master_address_conversion *master_memory1;
  62.     struct pci_master_address_conversion *master_memory2;
  63.  
  64.     struct pci_target_address_conversion *target_memory1;
  65.     struct pci_target_address_conversion *target_memory2;
  66.  
  67.     struct pci_master_address_conversion *master_io;
  68.  
  69.     pci_exclusive_access_t exclusive_access;
  70.  
  71.     uint32_t pci_clock_max;
  72.     uint8_t wait_time_limit_from_irdy_to_trdy;    /* Only VR4122 is supported */
  73.  
  74.     struct pci_mailbox_address *mailbox;
  75.     struct pci_target_address_window *target_window1;
  76.     struct pci_target_address_window *target_window2;
  77.  
  78.     uint8_t master_latency_timer;
  79.     uint8_t retry_limit;
  80.  
  81.     pci_arbiter_priority_control_t arbiter_priority_control;
  82.     pci_take_away_gnt_mode_t take_away_gnt_mode;
  83.  
  84.     struct resource *mem_resource;
  85.     struct resource *io_resource;
  86. };
  87.  
  88. extern void vr41xx_pciu_setup(struct pci_controller_unit_setup *setup);
  89.  
  90. #endif /* __NEC_VR41XX_PCI_H */
  91.