summaryrefslogtreecommitdiff
path: root/kernel/xpp/xbus-core.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/xpp/xbus-core.h')
-rw-r--r--kernel/xpp/xbus-core.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/xpp/xbus-core.h b/kernel/xpp/xbus-core.h
index a24d76b..773d703 100644
--- a/kernel/xpp/xbus-core.h
+++ b/kernel/xpp/xbus-core.h
@@ -94,7 +94,6 @@ enum xbus_state {
XBUS_STATE_READY,
XBUS_STATE_DEACTIVATING,
XBUS_STATE_DEACTIVATED,
- XBUS_STATE_DISCONNECTED,
XBUS_STATE_FAIL,
};
@@ -106,6 +105,7 @@ struct xbus_transport {
struct device *transport_device;
ushort max_send_size;
enum xbus_state xbus_state;
+ unsigned long transport_flags;
spinlock_t state_lock;
atomic_t transport_refcount;
wait_queue_head_t transport_unused;
@@ -117,6 +117,9 @@ struct xbus_transport {
#define XBUS_IS(xbus, st) (XBUS_STATE(xbus) == XBUS_STATE_ ## st)
#define TRANSPORT_EXIST(xbus) ((xbus)->transport.ops != NULL)
+#define XBUS_FLAG_CONNECTED 0
+#define XBUS_FLAGS(xbus, flg) test_bit(XBUS_FLAG_ ## flg, &((xbus)->transport.transport_flags))
+
struct xbus_ops *transportops_get(xbus_t *xbus);
void transportops_put(xbus_t *xbus);
@@ -300,11 +303,12 @@ xpacket_t *xframe_next_packet(xframe_t *xframe, int len);
xpd_t *xpd_of(const xbus_t *xbus, int xpd_num);
xpd_t *xpd_byaddr(const xbus_t *xbus, uint unit, uint subunit);
bool xbus_setstate(xbus_t *xbus, enum xbus_state newstate);
+bool xbus_setflags(xbus_t *xbus, int flagbit, bool on);
xbus_t *xbus_new(struct xbus_ops *ops, ushort max_send_size, struct device *transport_device, void *priv);
void xbus_free(xbus_t *xbus);
int xbus_connect(xbus_t *xbus);
int xbus_activate(xbus_t *xbus);
-void xbus_deactivate(xbus_t *xbus, bool is_disconnected);
+void xbus_deactivate(xbus_t *xbus);
void xbus_disconnect(xbus_t *xbus);
void xbus_receive_xframe(xbus_t *xbus, xframe_t *xframe);
int xbus_process_worker(xbus_t *xbus);