root/drivers/staging/kpc2000/kpc2000/pcie.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 #ifndef KP2000_PCIE_H
   3 #define KP2000_PCIE_H
   4 #include <linux/types.h>
   5 #include <linux/pci.h>
   6 #include "../kpc.h"
   7 #include "dma_common_defs.h"
   8 
   9 
  10 /*      System Register Map (BAR 1, Start Addr 0)
  11  *
  12  *  BAR Size:
  13  *  1048576 (0x100000) bytes = 131072 (0x20000) registers = 256 pages (4K)
  14  *
  15  *             6         5         4         3         2         1         0
  16  *          3210987654321098765432109876543210987654321098765432109876543210
  17  *      0   <--------------------------- MAGIC ---------------------------->
  18  *      1   <----------- Card ID ---------><----------- Revision ---------->
  19  *      2   <--------- Date Stamp --------><--------- Time Stamp ---------->
  20  *      3   <-------- Core Tbl Len -------><-------- Core Tbl Offset ------>
  21  *      4   <---------------------------- SSID ---------------------------->
  22  *      5                                                           < HWID >
  23  *      6   <------------------------- FPGA DDNA -------------------------->
  24  *      7   <------------------------ CPLD Config ------------------------->
  25  *      8   <----------------------- IRQ Mask Flags ----------------------->
  26  *      9   <---------------------- IRQ Active Flags ---------------------->
  27  */
  28 
  29 #define REG_WIDTH                       8
  30 #define REG_MAGIC_NUMBER                (0 * REG_WIDTH)
  31 #define REG_CARD_ID_AND_BUILD           (1 * REG_WIDTH)
  32 #define REG_DATE_AND_TIME_STAMPS        (2 * REG_WIDTH)
  33 #define REG_CORE_TABLE_OFFSET           (3 * REG_WIDTH)
  34 #define REG_FPGA_SSID                   (4 * REG_WIDTH)
  35 #define REG_FPGA_HW_ID                  (5 * REG_WIDTH)
  36 #define REG_FPGA_DDNA                   (6 * REG_WIDTH)
  37 #define REG_CPLD_CONFIG                 (7 * REG_WIDTH)
  38 #define REG_INTERRUPT_MASK              (8 * REG_WIDTH)
  39 #define REG_INTERRUPT_ACTIVE            (9 * REG_WIDTH)
  40 #define REG_PCIE_ERROR_COUNT            (10 * REG_WIDTH)
  41 
  42 #define KP2000_MAGIC_VALUE              0x196C61482231894DULL
  43 
  44 #define PCI_VENDOR_ID_DAKTRONICS        0x1c33
  45 #define PCI_DEVICE_ID_DAKTRONICS        0x6021
  46 
  47 #define DMA_BAR                         0
  48 #define REG_BAR                         1
  49 
  50 struct kp2000_device {
  51         struct pci_dev          *pdev;
  52         char                    name[16];
  53 
  54         unsigned int            card_num;
  55         struct mutex            sem;
  56 
  57         void __iomem            *sysinfo_regs_base;
  58         void __iomem            *regs_bar_base;
  59         struct resource         regs_base_resource;
  60         void __iomem            *dma_bar_base;
  61         void __iomem            *dma_common_regs;
  62         struct resource         dma_base_resource;
  63 
  64         // "System Registers"
  65         u32                     card_id;
  66         u32                     build_version;
  67         u32                     build_datestamp;
  68         u32                     build_timestamp;
  69         u32                     core_table_offset;
  70         u32                     core_table_length;
  71         u8                      core_table_rev;
  72         u8                      hardware_revision;
  73         u64                     ssid;
  74         u64                     ddna;
  75 
  76         // IRQ stuff
  77         unsigned int            irq;
  78 
  79         struct list_head        uio_devices_list;
  80 };
  81 
  82 extern struct class *kpc_uio_class;
  83 extern struct attribute *kpc_uio_class_attrs[];
  84 
  85 int kp2000_probe_cores(struct kp2000_device *pcard);
  86 void kp2000_remove_cores(struct kp2000_device *pcard);
  87 
  88 // Define this quick little macro because the expression is used frequently
  89 #define PCARD_TO_DEV(pcard)     (&(pcard->pdev->dev))
  90 
  91 #endif /* KP2000_PCIE_H */

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