aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rapidio/rio.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rapidio/rio.h')
-rw-r--r--drivers/rapidio/rio.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/rapidio/rio.h b/drivers/rapidio/rio.h
index b53c5ec276a..2f628ce1a1c 100644
--- a/drivers/rapidio/rio.h
+++ b/drivers/rapidio/rio.h
@@ -18,6 +18,10 @@
18 18
19extern u32 rio_mport_get_feature(struct rio_mport *mport, int local, u16 destid, 19extern u32 rio_mport_get_feature(struct rio_mport *mport, int local, u16 destid,
20 u8 hopcount, int ftr); 20 u8 hopcount, int ftr);
21extern u32 rio_mport_get_physefb(struct rio_mport *port, int local,
22 u16 destid, u8 hopcount);
23extern u32 rio_mport_get_efb(struct rio_mport *port, int local, u16 destid,
24 u8 hopcount, u32 from);
21extern int rio_create_sysfs_dev_files(struct rio_dev *rdev); 25extern int rio_create_sysfs_dev_files(struct rio_dev *rdev);
22extern int rio_enum_mport(struct rio_mport *mport); 26extern int rio_enum_mport(struct rio_mport *mport);
23extern int rio_disc_mport(struct rio_mport *mport); 27extern int rio_disc_mport(struct rio_mport *mport);
@@ -29,6 +33,7 @@ extern int rio_std_route_get_entry(struct rio_mport *mport, u16 destid,
29 u8 *route_port); 33 u8 *route_port);
30extern int rio_std_route_clr_table(struct rio_mport *mport, u16 destid, 34extern int rio_std_route_clr_table(struct rio_mport *mport, u16 destid,
31 u8 hopcount, u16 table); 35 u8 hopcount, u16 table);
36extern int rio_set_port_lockout(struct rio_dev *rdev, u32 pnum, int lock);
32 37
33/* Structures internal to the RIO core code */ 38/* Structures internal to the RIO core code */
34extern struct device_attribute rio_dev_attrs[]; 39extern struct device_attribute rio_dev_attrs[];
@@ -61,3 +66,28 @@ extern struct rio_route_ops __end_rio_route_ops[];
61 66
62#define RIO_GET_DID(size, x) (size ? (x & 0xffff) : ((x & 0x00ff0000) >> 16)) 67#define RIO_GET_DID(size, x) (size ? (x & 0xffff) : ((x & 0x00ff0000) >> 16))
63#define RIO_SET_DID(size, x) (size ? (x & 0xffff) : ((x & 0x000000ff) << 16)) 68#define RIO_SET_DID(size, x) (size ? (x & 0xffff) : ((x & 0x000000ff) << 16))
69
70/*
71 * RapidIO Error Management
72 */
73extern struct rio_em_ops __start_rio_em_ops[];
74extern struct rio_em_ops __end_rio_em_ops[];
75
76/* Helpers internal to the RIO core code */
77#define DECLARE_RIO_EM_SECTION(section, name, vid, did, init_hook, em_hook) \
78 static const struct rio_em_ops __rio_em_##name __used \
79 __section(section) = { vid, did, init_hook, em_hook };
80
81/**
82 * DECLARE_RIO_EM_OPS - Registers switch EM operations
83 * @vid: RIO vendor ID
84 * @did: RIO device ID
85 * @init_hook: Callback that initializes device specific EM
86 * @em_hook: Callback that handles device specific EM
87 *
88 * A &struct rio_em_ops is initialized with the ops and placed into a
89 * RIO-specific kernel section.
90 */
91#define DECLARE_RIO_EM_OPS(vid, did, init_hook, em_hook) \
92 DECLARE_RIO_EM_SECTION(.rio_em_ops, vid##did, \
93 vid, did, init_hook, em_hook)