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