aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/ipmi/kcs_bmc_device.h
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2021-06-08 20:17:50 +0930
committerCorey Minyard <cminyard@mvista.com>2021-06-21 19:50:28 -0500
commit28651e6c4237f4aee5e0744ce37d3a50e7b1f36b (patch)
treeb5c9d7d039475d39bd2e8ceb78b76e2065251292 /drivers/char/ipmi/kcs_bmc_device.h
parentipmi: kcs_bmc: Decouple the IPMI chardev from the core (diff)
downloadlinux-dev-28651e6c4237f4aee5e0744ce37d3a50e7b1f36b.tar.xz
linux-dev-28651e6c4237f4aee5e0744ce37d3a50e7b1f36b.zip
ipmi: kcs_bmc: Allow clients to control KCS IRQ state
Add a mechanism for controlling whether the client associated with a KCS device will receive Input Buffer Full (IBF) and Output Buffer Empty (OBE) events. This enables an abstract implementation of poll() for KCS devices. A wart in the implementation is that the ASPEED KCS devices don't support an OBE interrupt for the BMC. Instead we pretend it has one by polling the status register waiting for the Output Buffer Full (OBF) bit to clear, and generating an event when OBE is observed. Cc: CS20 KWLiu <KWLIU@nuvoton.com> Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Reviewed-by: Zev Weiss <zweiss@equinix.com> Message-Id: <20210608104757.582199-10-andrew@aj.id.au> Signed-off-by: Corey Minyard <cminyard@mvista.com>
Diffstat (limited to 'drivers/char/ipmi/kcs_bmc_device.h')
-rw-r--r--drivers/char/ipmi/kcs_bmc_device.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/char/ipmi/kcs_bmc_device.h b/drivers/char/ipmi/kcs_bmc_device.h
index c9a4237bbf40..17c572f25c54 100644
--- a/drivers/char/ipmi/kcs_bmc_device.h
+++ b/drivers/char/ipmi/kcs_bmc_device.h
@@ -9,6 +9,7 @@
#include "kcs_bmc.h"
struct kcs_bmc_device_ops {
+ void (*irq_mask_update)(struct kcs_bmc_device *kcs_bmc, u8 mask, u8 enable);
u8 (*io_inputb)(struct kcs_bmc_device *kcs_bmc, u32 reg);
void (*io_outputb)(struct kcs_bmc_device *kcs_bmc, u32 reg, u8 b);
void (*io_updateb)(struct kcs_bmc_device *kcs_bmc, u32 reg, u8 mask, u8 b);