xref: /openbmc/qemu/include/hw/ipmi/ipmi_bt.h (revision e446ed5a29d1a39b257bd78fc193ab8a69ec81c2)
11739d54cSCorey Minyard /*
21739d54cSCorey Minyard  * QEMU IPMI BT emulation
31739d54cSCorey Minyard  *
41739d54cSCorey Minyard  * Copyright (c) 2015 Corey Minyard, MontaVista Software, LLC
51739d54cSCorey Minyard  *
61739d54cSCorey Minyard  * Permission is hereby granted, free of charge, to any person obtaining a copy
71739d54cSCorey Minyard  * of this software and associated documentation files (the "Software"), to deal
81739d54cSCorey Minyard  * in the Software without restriction, including without limitation the rights
91739d54cSCorey Minyard  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
101739d54cSCorey Minyard  * copies of the Software, and to permit persons to whom the Software is
111739d54cSCorey Minyard  * furnished to do so, subject to the following conditions:
121739d54cSCorey Minyard  *
131739d54cSCorey Minyard  * The above copyright notice and this permission notice shall be included in
141739d54cSCorey Minyard  * all copies or substantial portions of the Software.
151739d54cSCorey Minyard  *
161739d54cSCorey Minyard  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
171739d54cSCorey Minyard  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
181739d54cSCorey Minyard  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
191739d54cSCorey Minyard  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
201739d54cSCorey Minyard  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
211739d54cSCorey Minyard  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
221739d54cSCorey Minyard  * THE SOFTWARE.
231739d54cSCorey Minyard  */
241739d54cSCorey Minyard 
251739d54cSCorey Minyard #ifndef HW_IPMI_BT_H
261739d54cSCorey Minyard #define HW_IPMI_BT_H
271739d54cSCorey Minyard 
281739d54cSCorey Minyard #include "hw/ipmi/ipmi.h"
291739d54cSCorey Minyard 
301739d54cSCorey Minyard typedef struct IPMIBT {
311739d54cSCorey Minyard     IPMIBmc *bmc;
321739d54cSCorey Minyard 
331739d54cSCorey Minyard     bool do_wake;
341739d54cSCorey Minyard 
351739d54cSCorey Minyard     bool obf_irq_set;
361739d54cSCorey Minyard     bool atn_irq_set;
371739d54cSCorey Minyard     bool irqs_enabled;
381739d54cSCorey Minyard 
391739d54cSCorey Minyard     uint8_t outmsg[MAX_IPMI_MSG_SIZE];
401739d54cSCorey Minyard     uint32_t outpos;
411739d54cSCorey Minyard     uint32_t outlen;
421739d54cSCorey Minyard 
431739d54cSCorey Minyard     uint8_t inmsg[MAX_IPMI_MSG_SIZE];
441739d54cSCorey Minyard     uint32_t inlen;
451739d54cSCorey Minyard 
461739d54cSCorey Minyard     uint8_t control_reg;
471739d54cSCorey Minyard     uint8_t mask_reg;
481739d54cSCorey Minyard 
491739d54cSCorey Minyard     /*
501739d54cSCorey Minyard      * This is a response number that we send with the command to make
511739d54cSCorey Minyard      * sure that the response matches the command.
521739d54cSCorey Minyard      */
531739d54cSCorey Minyard     uint8_t waiting_rsp;
541739d54cSCorey Minyard     uint8_t waiting_seq;
551739d54cSCorey Minyard 
561739d54cSCorey Minyard     uint32_t io_base;
571739d54cSCorey Minyard     unsigned long io_length;
581739d54cSCorey Minyard     MemoryRegion io;
59*79d29a9dSCorey Minyard     unsigned long size_mask;
601739d54cSCorey Minyard 
611739d54cSCorey Minyard     void (*raise_irq)(struct IPMIBT *ib);
621739d54cSCorey Minyard     void (*lower_irq)(struct IPMIBT *ib);
631739d54cSCorey Minyard     void *opaque;
641739d54cSCorey Minyard 
651739d54cSCorey Minyard     bool use_irq;
661739d54cSCorey Minyard } IPMIBT;
671739d54cSCorey Minyard 
681739d54cSCorey Minyard void ipmi_bt_get_fwinfo(IPMIBT *ik, IPMIFwInfo *info);
691739d54cSCorey Minyard void ipmi_bt_class_init(IPMIInterfaceClass *iic);
701739d54cSCorey Minyard extern const VMStateDescription vmstate_IPMIBT;
711739d54cSCorey Minyard int ipmi_bt_vmstate_post_load(void *opaque, int version);
721739d54cSCorey Minyard 
731739d54cSCorey Minyard #endif /* HW_IPMI_BT_H */
74