1 /****************************************************************************
3 * Copyright (c) 2012 - 2016 Samsung Electronics Co., Ltd. All rights reserved
5 ****************************************************************************/
7 #ifndef __SCSC_WIFI_CM_IF_H__
8 #define __SCSC_WIFI_CM_IF_H__
10 #include <linux/types.h>
11 #include <linux/device.h>
12 #include <linux/kref.h>
14 #include <scsc/scsc_mx.h>
16 #define SLSI_WIFI_CM_IF_SYSTEM_ERROR_PANIC 8
21 * CM interface States:
22 * STOPPED : (default) state,
32 enum scsc_wifi_cm_if_state
{
33 SCSC_WIFI_CM_IF_STATE_STOPPED
,
34 SCSC_WIFI_CM_IF_STATE_PROBING
,
35 SCSC_WIFI_CM_IF_STATE_PROBED
,
36 SCSC_WIFI_CM_IF_STATE_STARTING
,
37 SCSC_WIFI_CM_IF_STATE_STARTED
,
38 SCSC_WIFI_CM_IF_STATE_STOPPING
,
39 SCSC_WIFI_CM_IF_STATE_REMOVING
,
40 SCSC_WIFI_CM_IF_STATE_REMOVED
,
41 SCSC_WIFI_CM_IF_STATE_BLOCKED
46 * SCSC_WIFI_STOP : Wifi service should freeze
47 * SCSC_WIFI_FAILURE_RESET : Failure has been handled
48 * SCSC_WIFI_SUSPEND: Host going in to suspend mode
49 * SCSC_WIFI_RESUME: Host resuming
51 enum scsc_wifi_cm_if_notifier
{
53 SCSC_WIFI_FAILURE_RESET
,
56 SCSC_WIFI_SUBSYSTEM_RESET
,
61 struct scsc_wifi_cm_if
{
62 struct slsi_dev
*sdev
;
64 struct mutex cm_if_mutex
;
68 /* refer to enum scsc_wifi_cm_if_state */
73 #ifdef CONFIG_SCSC_WLAN_SILENT_RECOVERY
78 /*********************************** API ************************************/
81 * Driver's interface to cm_if
83 struct slsi_dev
*slsi_dev_attach(struct device
*dev
, struct scsc_mx
*core
, struct scsc_service_client
*mx_wlan_client
);
84 void slsi_dev_detach(struct slsi_dev
*sdev
);
87 * cm_if's interface to driver
89 int slsi_sm_service_driver_register(void);
90 void slsi_sm_service_driver_unregister(void);
91 void slsi_sm_service_failed(struct slsi_dev
*sdev
, const char *reason
);
92 int slsi_sm_wlan_service_open(struct slsi_dev
*sdev
);
93 int slsi_sm_wlan_service_start(struct slsi_dev
*sdev
);
94 void slsi_sm_wlan_service_stop(struct slsi_dev
*sdev
);
95 void slsi_sm_wlan_service_close(struct slsi_dev
*sdev
);
96 int slsi_wlan_service_notifier_register(struct notifier_block
*nb
);
97 int slsi_wlan_service_notifier_unregister(struct notifier_block
*nb
);
98 int slsi_sm_recovery_service_stop(struct slsi_dev
*sdev
);
99 int slsi_sm_recovery_service_close(struct slsi_dev
*sdev
);
100 int slsi_sm_recovery_service_open(struct slsi_dev
*sdev
);
101 int slsi_sm_recovery_service_start(struct slsi_dev
*sdev
);