Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* Copyright (c) 2021, IBM Corp. */
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