LCOV - code coverage report
Current view: top level - arch/x86/pci - early.c (source / functions) Hit Total Coverage
Test: combined.info Lines: 17 29 58.6 %
Date: 2022-04-01 13:59:58 Functions: 4 7 57.1 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : // SPDX-License-Identifier: GPL-2.0
       2                 :            : #include <linux/kernel.h>
       3                 :            : #include <linux/pci.h>
       4                 :            : #include <asm/pci-direct.h>
       5                 :            : #include <asm/io.h>
       6                 :            : #include <asm/pci_x86.h>
       7                 :            : 
       8                 :            : /* Direct PCI access. This is used for PCI accesses in early boot before
       9                 :            :    the PCI subsystem works. */
      10                 :            : 
      11                 :       2964 : u32 read_pci_config(u8 bus, u8 slot, u8 func, u8 offset)
      12                 :            : {
      13                 :       2964 :         u32 v;
      14                 :       2964 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      15                 :       2964 :         v = inl(0xcfc);
      16                 :       2964 :         return v;
      17                 :            : }
      18                 :            : 
      19                 :        468 : u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset)
      20                 :            : {
      21                 :        468 :         u8 v;
      22                 :        468 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      23                 :        468 :         v = inb(0xcfc + (offset&3));
      24                 :        468 :         return v;
      25                 :            : }
      26                 :            : 
      27                 :       3588 : u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset)
      28                 :            : {
      29                 :       3588 :         u16 v;
      30                 :       3588 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      31                 :       3588 :         v = inw(0xcfc + (offset&2));
      32                 :       3588 :         return v;
      33                 :            : }
      34                 :            : 
      35                 :          0 : void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset,
      36                 :            :                                     u32 val)
      37                 :            : {
      38                 :          0 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      39                 :          0 :         outl(val, 0xcfc);
      40                 :          0 : }
      41                 :            : 
      42                 :          0 : void write_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset, u8 val)
      43                 :            : {
      44                 :          0 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      45                 :          0 :         outb(val, 0xcfc + (offset&3));
      46                 :          0 : }
      47                 :            : 
      48                 :          0 : void write_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset, u16 val)
      49                 :            : {
      50                 :          0 :         outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
      51                 :          0 :         outw(val, 0xcfc + (offset&2));
      52                 :          0 : }
      53                 :            : 
      54                 :        390 : int early_pci_allowed(void)
      55                 :            : {
      56                 :        390 :         return (pci_probe & (PCI_PROBE_CONF1|PCI_PROBE_NOEARLY)) ==
      57                 :            :                         PCI_PROBE_CONF1;
      58                 :            : }
      59                 :            : 

Generated by: LCOV version 1.14