0001
0002
0003
0004 #ifndef __KCS_BMC_CONSUMER_H__
0005 #define __KCS_BMC_CONSUMER_H__
0006
0007 #include <linux/irqreturn.h>
0008
0009 #include "kcs_bmc.h"
0010
0011 struct kcs_bmc_driver_ops {
0012 int (*add_device)(struct kcs_bmc_device *kcs_bmc);
0013 int (*remove_device)(struct kcs_bmc_device *kcs_bmc);
0014 };
0015
0016 struct kcs_bmc_driver {
0017 struct list_head entry;
0018
0019 const struct kcs_bmc_driver_ops *ops;
0020 };
0021
0022 struct kcs_bmc_client_ops {
0023 irqreturn_t (*event)(struct kcs_bmc_client *client);
0024 };
0025
0026 struct kcs_bmc_client {
0027 const struct kcs_bmc_client_ops *ops;
0028
0029 struct kcs_bmc_device *dev;
0030 };
0031
0032 void kcs_bmc_register_driver(struct kcs_bmc_driver *drv);
0033 void kcs_bmc_unregister_driver(struct kcs_bmc_driver *drv);
0034
0035 int kcs_bmc_enable_device(struct kcs_bmc_device *kcs_bmc, struct kcs_bmc_client *client);
0036 void kcs_bmc_disable_device(struct kcs_bmc_device *kcs_bmc, struct kcs_bmc_client *client);
0037
0038 void kcs_bmc_update_event_mask(struct kcs_bmc_device *kcs_bmc, u8 mask, u8 events);
0039
0040 u8 kcs_bmc_read_data(struct kcs_bmc_device *kcs_bmc);
0041 void kcs_bmc_write_data(struct kcs_bmc_device *kcs_bmc, u8 data);
0042 u8 kcs_bmc_read_status(struct kcs_bmc_device *kcs_bmc);
0043 void kcs_bmc_write_status(struct kcs_bmc_device *kcs_bmc, u8 data);
0044 void kcs_bmc_update_status(struct kcs_bmc_device *kcs_bmc, u8 mask, u8 val);
0045 #endif