Lines Matching refs:master

83 	struct fsi_master	*master;  member
111 static int fsi_master_read(struct fsi_master *master, int link,
113 static int fsi_master_write(struct fsi_master *master, int link,
115 static int fsi_master_break(struct fsi_master *master, int link);
211 struct fsi_master *master = slave->master; in fsi_slave_report_and_clear_errors() local
219 rc = fsi_master_read(master, link, id, FSI_SLAVE_BASE + FSI_SISC, in fsi_slave_report_and_clear_errors()
224 rc = fsi_master_read(master, link, id, FSI_SLAVE_BASE + FSI_SSTAT, in fsi_slave_report_and_clear_errors()
233 return fsi_master_write(master, link, id, FSI_SLAVE_BASE + FSI_SISC, in fsi_slave_report_and_clear_errors()
280 return fsi_master_write(slave->master, slave->link, slave->id, in fsi_slave_set_smode()
288 struct fsi_master *master = slave->master; in fsi_slave_handle_error() local
310 if (master->term) { in fsi_slave_handle_error()
311 rc = master->term(master, link, id); in fsi_slave_handle_error()
313 rc = fsi_master_read(master, link, id, 0, in fsi_slave_handle_error()
326 rc = fsi_master_break(master, link); in fsi_slave_handle_error()
337 if (master->link_config) in fsi_slave_handle_error()
338 master->link_config(master, link, in fsi_slave_handle_error()
356 rc = fsi_master_read(slave->master, slave->link, in fsi_slave_read()
381 rc = fsi_master_write(slave->master, slave->link, in fsi_slave_write()
535 slave->master->idx, slave->link, in fsi_slave_scan()
679 static struct device_node *fsi_slave_find_of_node(struct fsi_master *master, in fsi_slave_find_of_node() argument
684 parent = dev_of_node(&master->dev); in fsi_slave_find_of_node()
806 struct fsi_master *master = slave->master; in send_term_store() local
808 if (!master->term) in send_term_store()
811 master->term(master, slave->link, slave->id); in send_term_store()
830 struct fsi_master *master = slave->master; in slave_send_echo_store() local
840 if (!master->link_config) in slave_send_echo_store()
850 if (master->link_config) in slave_send_echo_store()
851 master->link_config(master, slave->link, in slave_send_echo_store()
987 static int fsi_slave_init(struct fsi_master *master, int link, uint8_t id) in fsi_slave_init() argument
1001 rc = fsi_master_read(master, link, id, 0, &data, sizeof(data)); in fsi_slave_init()
1003 dev_dbg(&master->dev, "can't read slave %02x:%02x %d\n", in fsi_slave_init()
1011 trace_fsi_slave_invalid_cfam(master, link, cfam_id); in fsi_slave_init()
1012 dev_warn(&master->dev, "slave %02x:%02x invalid cfam id CRC!\n", in fsi_slave_init()
1017 dev_dbg(&master->dev, "fsi: found chip %08x at %02x:%02x:%02x\n", in fsi_slave_init()
1018 cfam_id, master->idx, link, id); in fsi_slave_init()
1023 if (master->flags & FSI_MASTER_FLAG_SWCLOCK) { in fsi_slave_init()
1025 rc = fsi_master_write(master, link, id, in fsi_slave_init()
1029 dev_warn(&master->dev, in fsi_slave_init()
1043 slave->dev.parent = &master->dev; in fsi_slave_init()
1044 slave->dev.of_node = fsi_slave_find_of_node(master, link, id); in fsi_slave_init()
1048 slave->master = master; in fsi_slave_init()
1065 rc = fsi_master_write(master, link, id, FSI_SLAVE_BASE + FSI_SLBUS, in fsi_slave_init()
1068 dev_warn(&master->dev, in fsi_slave_init()
1074 dev_warn(&master->dev, in fsi_slave_init()
1101 if (master->link_config) in fsi_slave_init()
1102 master->link_config(master, link, in fsi_slave_init()
1114 dev_dbg(&master->dev, "failed during slave scan with: %d\n", in fsi_slave_init()
1142 static int fsi_master_read(struct fsi_master *master, int link, in fsi_master_read() argument
1147 trace_fsi_master_read(master, link, slave_id, addr, size); in fsi_master_read()
1151 rc = master->read(master, link, slave_id, addr, val, size); in fsi_master_read()
1153 trace_fsi_master_rw_result(master, link, slave_id, addr, size, in fsi_master_read()
1159 static int fsi_master_write(struct fsi_master *master, int link, in fsi_master_write() argument
1164 trace_fsi_master_write(master, link, slave_id, addr, size, val); in fsi_master_write()
1168 rc = master->write(master, link, slave_id, addr, val, size); in fsi_master_write()
1170 trace_fsi_master_rw_result(master, link, slave_id, addr, size, in fsi_master_write()
1176 static int fsi_master_link_disable(struct fsi_master *master, int link) in fsi_master_link_disable() argument
1178 if (master->link_enable) in fsi_master_link_disable()
1179 return master->link_enable(master, link, false); in fsi_master_link_disable()
1184 static int fsi_master_link_enable(struct fsi_master *master, int link) in fsi_master_link_enable() argument
1186 if (master->link_enable) in fsi_master_link_enable()
1187 return master->link_enable(master, link, true); in fsi_master_link_enable()
1195 static int fsi_master_break(struct fsi_master *master, int link) in fsi_master_break() argument
1199 trace_fsi_master_break(master, link); in fsi_master_break()
1201 if (master->send_break) in fsi_master_break()
1202 rc = master->send_break(master, link); in fsi_master_break()
1203 if (master->link_config) in fsi_master_break()
1204 master->link_config(master, link, 16, 16); in fsi_master_break()
1209 static int fsi_master_scan(struct fsi_master *master) in fsi_master_scan() argument
1213 for (link = 0; link < master->n_links; link++) { in fsi_master_scan()
1214 rc = fsi_master_link_enable(master, link); in fsi_master_scan()
1216 dev_dbg(&master->dev, in fsi_master_scan()
1220 rc = fsi_master_break(master, link); in fsi_master_scan()
1222 fsi_master_link_disable(master, link); in fsi_master_scan()
1223 dev_dbg(&master->dev, in fsi_master_scan()
1228 rc = fsi_slave_init(master, link, 0); in fsi_master_scan()
1230 fsi_master_link_disable(master, link); in fsi_master_scan()
1252 static void fsi_master_unscan(struct fsi_master *master) in fsi_master_unscan() argument
1254 device_for_each_child(&master->dev, NULL, fsi_master_remove_slave); in fsi_master_unscan()
1257 int fsi_master_rescan(struct fsi_master *master) in fsi_master_rescan() argument
1261 mutex_lock(&master->scan_lock); in fsi_master_rescan()
1262 fsi_master_unscan(master); in fsi_master_rescan()
1263 rc = fsi_master_scan(master); in fsi_master_rescan()
1264 mutex_unlock(&master->scan_lock); in fsi_master_rescan()
1273 struct fsi_master *master = to_fsi_master(dev); in master_rescan_store() local
1276 rc = fsi_master_rescan(master); in master_rescan_store()
1288 struct fsi_master *master = to_fsi_master(dev); in master_break_store() local
1290 fsi_master_break(master, 0); in master_break_store()
1303 ATTRIBUTE_GROUPS(master);
1310 int fsi_master_register(struct fsi_master *master) in fsi_master_register() argument
1315 mutex_init(&master->scan_lock); in fsi_master_register()
1316 master->idx = ida_simple_get(&master_ida, 0, INT_MAX, GFP_KERNEL); in fsi_master_register()
1317 if (master->idx < 0) in fsi_master_register()
1318 return master->idx; in fsi_master_register()
1320 dev_set_name(&master->dev, "fsi%d", master->idx); in fsi_master_register()
1321 master->dev.class = &fsi_master_class; in fsi_master_register()
1323 rc = device_register(&master->dev); in fsi_master_register()
1325 ida_simple_remove(&master_ida, master->idx); in fsi_master_register()
1329 np = dev_of_node(&master->dev); in fsi_master_register()
1331 mutex_lock(&master->scan_lock); in fsi_master_register()
1332 fsi_master_scan(master); in fsi_master_register()
1333 mutex_unlock(&master->scan_lock); in fsi_master_register()
1340 void fsi_master_unregister(struct fsi_master *master) in fsi_master_unregister() argument
1342 if (master->idx >= 0) { in fsi_master_unregister()
1343 ida_simple_remove(&master_ida, master->idx); in fsi_master_unregister()
1344 master->idx = -1; in fsi_master_unregister()
1347 mutex_lock(&master->scan_lock); in fsi_master_unregister()
1348 fsi_master_unscan(master); in fsi_master_unregister()
1349 mutex_unlock(&master->scan_lock); in fsi_master_unregister()
1350 device_unregister(&master->dev); in fsi_master_unregister()