root/arch/alpha/kernel/pci-noop.c

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

DEFINITIONS

This source file includes following definitions.
  1. alloc_pci_controller
  2. alloc_resource
  3. SYSCALL_DEFINE3
  4. SYSCALL_DEFINE5
  5. SYSCALL_DEFINE5

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  *      linux/arch/alpha/kernel/pci-noop.c
   4  *
   5  * Stub PCI interfaces for Jensen-specific kernels.
   6  */
   7 
   8 #include <linux/pci.h>
   9 #include <linux/init.h>
  10 #include <linux/memblock.h>
  11 #include <linux/gfp.h>
  12 #include <linux/capability.h>
  13 #include <linux/mm.h>
  14 #include <linux/errno.h>
  15 #include <linux/sched.h>
  16 #include <linux/dma-mapping.h>
  17 #include <linux/scatterlist.h>
  18 #include <linux/syscalls.h>
  19 
  20 #include "proto.h"
  21 
  22 
  23 /*
  24  * The PCI controller list.
  25  */
  26 
  27 struct pci_controller *hose_head, **hose_tail = &hose_head;
  28 struct pci_controller *pci_isa_hose;
  29 
  30 
  31 struct pci_controller * __init
  32 alloc_pci_controller(void)
  33 {
  34         struct pci_controller *hose;
  35 
  36         hose = memblock_alloc(sizeof(*hose), SMP_CACHE_BYTES);
  37         if (!hose)
  38                 panic("%s: Failed to allocate %zu bytes\n", __func__,
  39                       sizeof(*hose));
  40 
  41         *hose_tail = hose;
  42         hose_tail = &hose->next;
  43 
  44         return hose;
  45 }
  46 
  47 struct resource * __init
  48 alloc_resource(void)
  49 {
  50         void *ptr = memblock_alloc(sizeof(struct resource), SMP_CACHE_BYTES);
  51 
  52         if (!ptr)
  53                 panic("%s: Failed to allocate %zu bytes\n", __func__,
  54                       sizeof(struct resource));
  55 
  56         return ptr;
  57 }
  58 
  59 SYSCALL_DEFINE3(pciconfig_iobase, long, which, unsigned long, bus,
  60                 unsigned long, dfn)
  61 {
  62         struct pci_controller *hose;
  63 
  64         /* from hose or from bus.devfn */
  65         if (which & IOBASE_FROM_HOSE) {
  66                 for (hose = hose_head; hose; hose = hose->next)
  67                         if (hose->index == bus)
  68                                 break;
  69                 if (!hose)
  70                         return -ENODEV;
  71         } else {
  72                 /* Special hook for ISA access.  */
  73                 if (bus == 0 && dfn == 0)
  74                         hose = pci_isa_hose;
  75                 else
  76                         return -ENODEV;
  77         }
  78 
  79         switch (which & ~IOBASE_FROM_HOSE) {
  80         case IOBASE_HOSE:
  81                 return hose->index;
  82         case IOBASE_SPARSE_MEM:
  83                 return hose->sparse_mem_base;
  84         case IOBASE_DENSE_MEM:
  85                 return hose->dense_mem_base;
  86         case IOBASE_SPARSE_IO:
  87                 return hose->sparse_io_base;
  88         case IOBASE_DENSE_IO:
  89                 return hose->dense_io_base;
  90         case IOBASE_ROOT_BUS:
  91                 return hose->bus->number;
  92         }
  93 
  94         return -EOPNOTSUPP;
  95 }
  96 
  97 SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
  98                 unsigned long, off, unsigned long, len, void __user *, buf)
  99 {
 100         if (!capable(CAP_SYS_ADMIN))
 101                 return -EPERM;
 102         else
 103                 return -ENODEV;
 104 }
 105 
 106 SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
 107                 unsigned long, off, unsigned long, len, void __user *, buf)
 108 {
 109         if (!capable(CAP_SYS_ADMIN))
 110                 return -EPERM;
 111         else
 112                 return -ENODEV;
 113 }

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