pci-noop.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/alpha/kernel/pci-noop.c
  3.  *
  4.  * Stub PCI interfaces for Jensen-specific kernels.
  5.  */
  6. #include <linux/pci.h>
  7. #include <linux/init.h>
  8. #include <linux/bootmem.h>
  9. #include <linux/errno.h>
  10. #include <linux/sched.h>
  11. #include "proto.h"
  12. /*
  13.  * The PCI controller list.
  14.  */
  15. struct pci_controller *hose_head, **hose_tail = &hose_head;
  16. struct pci_controller *pci_isa_hose;
  17. struct pci_controller * __init
  18. alloc_pci_controller(void)
  19. {
  20. struct pci_controller *hose;
  21. hose = alloc_bootmem(sizeof(*hose));
  22. *hose_tail = hose;
  23. hose_tail = &hose->next;
  24. return hose;
  25. }
  26. struct resource * __init
  27. alloc_resource(void)
  28. {
  29. struct resource *res;
  30. res = alloc_bootmem(sizeof(*res));
  31. return res;
  32. }
  33. asmlinkage long
  34. sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn)
  35. {
  36. struct pci_controller *hose;
  37. struct pci_dev *dev;
  38. /* from hose or from bus.devfn */
  39. if (which & IOBASE_FROM_HOSE) {
  40. for (hose = hose_head; hose; hose = hose->next) 
  41. if (hose->index == bus)
  42. break;
  43. if (!hose)
  44. return -ENODEV;
  45. } else {
  46. /* Special hook for ISA access.  */
  47. if (bus == 0 && dfn == 0)
  48. hose = pci_isa_hose;
  49. else
  50. return -ENODEV;
  51. }
  52. switch (which & ~IOBASE_FROM_HOSE) {
  53. case IOBASE_HOSE:
  54. return hose->index;
  55. case IOBASE_SPARSE_MEM:
  56. return hose->sparse_mem_base;
  57. case IOBASE_DENSE_MEM:
  58. return hose->dense_mem_base;
  59. case IOBASE_SPARSE_IO:
  60. return hose->sparse_io_base;
  61. case IOBASE_DENSE_IO:
  62. return hose->dense_io_base;
  63. case IOBASE_ROOT_BUS:
  64. return hose->bus->number;
  65. }
  66. return -EOPNOTSUPP;
  67. }
  68. asmlinkage long
  69. sys_pciconfig_read(unsigned long bus, unsigned long dfn,
  70.    unsigned long off, unsigned long len, void *buf)
  71. {
  72. if (!capable(CAP_SYS_ADMIN))
  73. return -EPERM;
  74. else
  75. return -ENODEV;
  76. }
  77. asmlinkage long
  78. sys_pciconfig_write(unsigned long bus, unsigned long dfn,
  79.     unsigned long off, unsigned long len, void *buf)
  80. {
  81. if (!capable(CAP_SYS_ADMIN))
  82. return -EPERM;
  83. else
  84. return -ENODEV;
  85. }
  86. /* stubs for the routines in pci_iommu.c */
  87. void *
  88. pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
  89. {
  90. return (void *)0;
  91. }
  92. void
  93. pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu_addr,
  94.     dma_addr_t dma_addr)
  95. {
  96. }
  97. dma_addr_t
  98. pci_map_single(struct pci_dev *pdev, void *cpu_addr, size_t size,
  99.        int direction)
  100. {
  101. return (dma_addr_t)0;
  102. }
  103. void
  104. pci_unmap_single(struct pci_dev *pdev, dma_addr_t dma_addr, size_t size,
  105.  int direction)
  106. {
  107. }
  108. int
  109. pci_map_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
  110.    int direction)
  111. {
  112. return 0;
  113. }
  114. void
  115. pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
  116.      int direction)
  117. {
  118. }
  119. int
  120. pci_dma_supported(struct pci_dev *hwdev, dma_addr_t mask)
  121. {
  122. return 0;
  123. }