LCOV - code coverage report
Current view: top level - drivers/pci/hotplug - cpci_hotplug.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 4 0.0 %
Date: 2022-03-28 13:20:08 Functions: 0 0 -
Branches: 0 6 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0+ */
       2                 :            : /*
       3                 :            :  * CompactPCI Hot Plug Core Functions
       4                 :            :  *
       5                 :            :  * Copyright (C) 2002 SOMA Networks, Inc.
       6                 :            :  * Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com)
       7                 :            :  * Copyright (C) 2001 IBM Corp.
       8                 :            :  *
       9                 :            :  * All rights reserved.
      10                 :            :  *
      11                 :            :  * Send feedback to <scottm@somanetworks.com>
      12                 :            :  */
      13                 :            : 
      14                 :            : #ifndef _CPCI_HOTPLUG_H
      15                 :            : #define _CPCI_HOTPLUG_H
      16                 :            : 
      17                 :            : #include <linux/types.h>
      18                 :            : #include <linux/pci.h>
      19                 :            : #include <linux/pci_hotplug.h>
      20                 :            : 
      21                 :            : /* PICMG 2.1 R2.0 HS CSR bits: */
      22                 :            : #define HS_CSR_INS      0x0080
      23                 :            : #define HS_CSR_EXT      0x0040
      24                 :            : #define HS_CSR_PI       0x0030
      25                 :            : #define HS_CSR_LOO      0x0008
      26                 :            : #define HS_CSR_PIE      0x0004
      27                 :            : #define HS_CSR_EIM      0x0002
      28                 :            : #define HS_CSR_DHA      0x0001
      29                 :            : 
      30                 :            : struct slot {
      31                 :            :         u8 number;
      32                 :            :         unsigned int devfn;
      33                 :            :         struct pci_bus *bus;
      34                 :            :         struct pci_dev *dev;
      35                 :            :         unsigned int latch_status:1;
      36                 :            :         unsigned int adapter_status:1;
      37                 :            :         unsigned int extracting;
      38                 :            :         struct hotplug_slot hotplug_slot;
      39                 :            :         struct list_head slot_list;
      40                 :            : };
      41                 :            : 
      42                 :            : struct cpci_hp_controller_ops {
      43                 :            :         int (*query_enum)(void);
      44                 :            :         int (*enable_irq)(void);
      45                 :            :         int (*disable_irq)(void);
      46                 :            :         int (*check_irq)(void *dev_id);
      47                 :            :         int (*hardware_test)(struct slot *slot, u32 value);
      48                 :            :         u8  (*get_power)(struct slot *slot);
      49                 :            :         int (*set_power)(struct slot *slot, int value);
      50                 :            : };
      51                 :            : 
      52                 :            : struct cpci_hp_controller {
      53                 :            :         unsigned int irq;
      54                 :            :         unsigned long irq_flags;
      55                 :            :         char *devname;
      56                 :            :         void *dev_id;
      57                 :            :         char *name;
      58                 :            :         struct cpci_hp_controller_ops *ops;
      59                 :            : };
      60                 :            : 
      61                 :          0 : static inline const char *slot_name(struct slot *slot)
      62                 :            : {
      63                 :          0 :         return hotplug_slot_name(&slot->hotplug_slot);
      64                 :            : }
      65                 :            : 
      66                 :          0 : static inline struct slot *to_slot(struct hotplug_slot *hotplug_slot)
      67                 :            : {
      68   [ #  #  #  #  :          0 :         return container_of(hotplug_slot, struct slot, hotplug_slot);
                   #  # ]
      69                 :            : }
      70                 :            : 
      71                 :            : int cpci_hp_register_controller(struct cpci_hp_controller *controller);
      72                 :            : int cpci_hp_unregister_controller(struct cpci_hp_controller *controller);
      73                 :            : int cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last);
      74                 :            : int cpci_hp_unregister_bus(struct pci_bus *bus);
      75                 :            : int cpci_hp_start(void);
      76                 :            : int cpci_hp_stop(void);
      77                 :            : 
      78                 :            : /*
      79                 :            :  * Internal function prototypes, these functions should not be used by
      80                 :            :  * board/chassis drivers.
      81                 :            :  */
      82                 :            : u8 cpci_get_attention_status(struct slot *slot);
      83                 :            : u8 cpci_get_latch_status(struct slot *slot);
      84                 :            : u8 cpci_get_adapter_status(struct slot *slot);
      85                 :            : u16 cpci_get_hs_csr(struct slot *slot);
      86                 :            : int cpci_set_attention_status(struct slot *slot, int status);
      87                 :            : int cpci_check_and_clear_ins(struct slot *slot);
      88                 :            : int cpci_check_ext(struct slot *slot);
      89                 :            : int cpci_clear_ext(struct slot *slot);
      90                 :            : int cpci_led_on(struct slot *slot);
      91                 :            : int cpci_led_off(struct slot *slot);
      92                 :            : int cpci_configure_slot(struct slot *slot);
      93                 :            : int cpci_unconfigure_slot(struct slot *slot);
      94                 :            : 
      95                 :            : #ifdef CONFIG_HOTPLUG_PCI_CPCI
      96                 :            : int cpci_hotplug_init(int debug);
      97                 :            : #else
      98                 :            : static inline int cpci_hotplug_init(int debug) { return 0; }
      99                 :            : #endif
     100                 :            : 
     101                 :            : #endif  /* _CPCI_HOTPLUG_H */

Generated by: LCOV version 1.14