Lines Matching full:master

3  * FSI hub master driver
14 #include "fsi-master.h"
21 * FSI hub master support
23 * A hub master increases the number of potential target devices that the
24 * primary FSI master can access. For each link a primary master supports,
25 * each of those links can in turn be chained to a hub master with multiple
37 struct fsi_master master; member
40 /* master address space */
43 #define to_fsi_master_hub(m) container_of(m, struct fsi_master_hub, master)
45 static int hub_master_read(struct fsi_master *master, int link, in hub_master_read() argument
48 struct fsi_master_hub *hub = to_fsi_master_hub(master); in hub_master_read()
57 static int hub_master_write(struct fsi_master *master, int link, in hub_master_write() argument
60 struct fsi_master_hub *hub = to_fsi_master_hub(master); in hub_master_write()
69 static int hub_master_break(struct fsi_master *master, int link) in hub_master_break() argument
77 return hub_master_write(master, link, 0, addr, &cmd, sizeof(cmd)); in hub_master_break()
80 static int hub_master_link_enable(struct fsi_master *master, int link, in hub_master_link_enable() argument
83 struct fsi_master_hub *hub = to_fsi_master_hub(master); in hub_master_link_enable()
136 /* Initialize the MFSI (hub master) engine */ in hub_master_init()
165 /* Leave enabled long enough for master logic to set up */ in hub_master_init()
185 /* Reset the master bridge */ in hub_master_init()
228 hub->master.dev.parent = dev; in hub_master_probe()
229 hub->master.dev.release = hub_master_release; in hub_master_probe()
230 hub->master.dev.of_node = of_node_get(dev_of_node(dev)); in hub_master_probe()
232 hub->master.n_links = links; in hub_master_probe()
233 hub->master.read = hub_master_read; in hub_master_probe()
234 hub->master.write = hub_master_write; in hub_master_probe()
235 hub->master.send_break = hub_master_break; in hub_master_probe()
236 hub->master.link_enable = hub_master_link_enable; in hub_master_probe()
242 rc = fsi_master_register(&hub->master); in hub_master_probe()
247 * and holds the sole reference on master.dev. This means the device in hub_master_probe()
253 get_device(&hub->master.dev); in hub_master_probe()
266 fsi_master_unregister(&hub->master); in hub_master_remove()
268 of_node_put(hub->master.dev.of_node); in hub_master_remove()
271 * master.dev will likely be ->release()ed after this, which free()s in hub_master_remove()
274 put_device(&hub->master.dev); in hub_master_remove()
290 .name = "fsi-master-hub",
298 MODULE_DESCRIPTION("FSI hub master driver");