linux/arch/powerpc/include/asm/pmi.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2#ifndef _POWERPC_PMI_H
   3#define _POWERPC_PMI_H
   4
   5/*
   6 * Definitions for talking with PMI device on PowerPC
   7 *
   8 * PMI (Platform Management Interrupt) is a way to communicate
   9 * with the BMC (Baseboard Management Controller) via interrupts.
  10 * Unlike IPMI it is bidirectional and has a low latency.
  11 *
  12 * (C) Copyright IBM Deutschland Entwicklung GmbH 2005
  13 *
  14 * Author: Christian Krafft <krafft@de.ibm.com>
  15 */
  16
  17#ifdef __KERNEL__
  18
  19#define PMI_TYPE_FREQ_CHANGE    0x01
  20#define PMI_TYPE_POWER_BUTTON   0x02
  21#define PMI_READ_TYPE           0
  22#define PMI_READ_DATA0          1
  23#define PMI_READ_DATA1          2
  24#define PMI_READ_DATA2          3
  25#define PMI_WRITE_TYPE          4
  26#define PMI_WRITE_DATA0         5
  27#define PMI_WRITE_DATA1         6
  28#define PMI_WRITE_DATA2         7
  29
  30#define PMI_ACK                 0x80
  31
  32#define PMI_TIMEOUT             100
  33
  34typedef struct {
  35        u8      type;
  36        u8      data0;
  37        u8      data1;
  38        u8      data2;
  39} pmi_message_t;
  40
  41struct pmi_handler {
  42        struct list_head node;
  43        u8 type;
  44        void (*handle_pmi_message) (pmi_message_t);
  45};
  46
  47int pmi_register_handler(struct pmi_handler *);
  48void pmi_unregister_handler(struct pmi_handler *);
  49
  50int pmi_send_message(pmi_message_t);
  51
  52#endif /* __KERNEL__ */
  53#endif /* _POWERPC_PMI_H */
  54