Lines Matching full:slave
62 struct sdw_slave *slave, in _sdw_program_slave_port_params() argument
83 ret = sdw_write(slave, addr1, t_params->offset2); in _sdw_program_slave_port_params()
90 ret = sdw_write(slave, addr2, t_params->blk_pkg_mode); in _sdw_program_slave_port_params()
107 ret = sdw_write(slave, addr3, wbuf); in _sdw_program_slave_port_params()
117 ret = sdw_write(slave, addr4, wbuf); in _sdw_program_slave_port_params()
130 struct sdw_slave_prop *slave_prop = &s_rt->slave->prop; in sdw_program_slave_port_params()
136 dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, in sdw_program_slave_port_params()
162 ret = sdw_update(s_rt->slave, addr1, 0xF, wbuf); in sdw_program_slave_port_params()
164 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
172 ret = sdw_write(s_rt->slave, addr2, (p_params->bps - 1)); in sdw_program_slave_port_params()
174 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
183 ret = sdw_write(s_rt->slave, addr3, wbuf); in sdw_program_slave_port_params()
185 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
192 ret = sdw_write(s_rt->slave, addr4, t_params->offset1); in sdw_program_slave_port_params()
194 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
202 ret = sdw_write(s_rt->slave, addr5, t_params->blk_grp_ctrl); in sdw_program_slave_port_params()
204 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
213 ret = sdw_write(s_rt->slave, addr6, t_params->lane_ctrl); in sdw_program_slave_port_params()
215 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
223 ret = _sdw_program_slave_port_params(bus, s_rt->slave, in sdw_program_slave_port_params()
226 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
258 * and Slave(s)
269 /* Program transport & port parameters for Slave(s) */ in sdw_program_port_params()
289 * sdw_enable_disable_slave_ports: Enable/disable slave data port
292 * @s_rt: slave runtime
318 ret = sdw_write(s_rt->slave, addr, p_rt->ch_mask); in sdw_enable_disable_slave_ports()
320 ret = sdw_write(s_rt->slave, addr, 0x0); in sdw_enable_disable_slave_ports()
323 dev_err(&s_rt->slave->dev, in sdw_enable_disable_slave_ports()
324 "Slave chn_en reg write failed:%d port:%d\n", in sdw_enable_disable_slave_ports()
366 * Slave(s)
377 /* Enable/Disable Slave port(s) */ in sdw_enable_disable_ports()
401 const struct sdw_slave_ops *ops = s_rt->slave->ops; in sdw_do_port_prep()
405 ret = ops->port_prep(s_rt->slave, &prep_ch, cmd); in sdw_do_port_prep()
407 dev_err(&s_rt->slave->dev, in sdw_do_port_prep()
408 "Slave Port Prep cmd %d failed: %d\n", in sdw_do_port_prep()
432 dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, in sdw_prep_deprep_slave_ports()
437 "Slave Port:%d properties not found\n", prep_ch.num); in sdw_prep_deprep_slave_ports()
455 ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, in sdw_prep_deprep_slave_ports()
461 /* Inform slave about the impending port prepare */ in sdw_prep_deprep_slave_ports()
464 /* Prepare Slave port implementing CP_SM */ in sdw_prep_deprep_slave_ports()
469 ret = sdw_write(s_rt->slave, addr, p_rt->ch_mask); in sdw_prep_deprep_slave_ports()
471 ret = sdw_write(s_rt->slave, addr, 0x0); in sdw_prep_deprep_slave_ports()
474 dev_err(&s_rt->slave->dev, in sdw_prep_deprep_slave_ports()
475 "Slave prep_ctrl reg write failed\n"); in sdw_prep_deprep_slave_ports()
480 port_ready = &s_rt->slave->port_ready[prep_ch.num]; in sdw_prep_deprep_slave_ports()
484 val = sdw_read(s_rt->slave, SDW_DPN_PREPARESTATUS(p_rt->num)); in sdw_prep_deprep_slave_ports()
487 dev_err(&s_rt->slave->dev, in sdw_prep_deprep_slave_ports()
498 ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, in sdw_prep_deprep_slave_ports()
534 * Slave(s)
545 /* Prepare/De-prepare Slave port(s) */ in sdw_prep_deprep_ports()
570 * This function notifies the Master(s) and Slave(s) of the
577 struct sdw_slave *slave; in sdw_notify_config() local
587 slave = s_rt->slave; in sdw_notify_config()
589 if (slave->ops->bus_config) { in sdw_notify_config()
590 ret = slave->ops->bus_config(slave, &bus->params); in sdw_notify_config()
592 dev_err(bus->dev, "Notify Slave: %d failed\n", in sdw_notify_config()
593 slave->dev_num); in sdw_notify_config()
604 * and Slave(s)
701 dev_err(bus->dev, "Slave frame_ctrl reg write failed\n"); in sdw_bank_switch()
936 * check if Master is already allocated (as a result of Slave adding in sdw_alloc_master_rt()
964 * sdw_alloc_slave_rt() - Allocate and initialize Slave runtime handle.
966 * @slave: Slave handle
973 *sdw_alloc_slave_rt(struct sdw_slave *slave, in sdw_alloc_slave_rt() argument
986 s_rt->slave = slave; in sdw_alloc_slave_rt()
1003 struct sdw_slave *slave, in sdw_slave_port_release() argument
1012 if (s_rt->slave != slave) in sdw_slave_port_release()
1025 * sdw_release_slave_stream() - Free Slave(s) runtime handle
1027 * @slave: Slave handle.
1032 static void sdw_release_slave_stream(struct sdw_slave *slave, in sdw_release_slave_stream() argument
1039 /* Retrieve Slave runtime handle */ in sdw_release_slave_stream()
1042 if (s_rt->slave == slave) { in sdw_release_slave_stream()
1058 * It frees the Master runtime handle and associated Slave(s) runtime
1060 * no effect as Slave(s) runtime handle would already be freed up.
1068 sdw_slave_port_release(s_rt->slave->bus, s_rt->slave, stream); in sdw_release_master_stream()
1069 sdw_release_slave_stream(s_rt->slave, stream); in sdw_release_master_stream()
1112 * sdw_stream_remove_slave() - Remove slave from sdw_stream
1114 * @slave: SDW Slave instance
1119 int sdw_stream_remove_slave(struct sdw_slave *slave, in sdw_stream_remove_slave() argument
1122 mutex_lock(&slave->bus->bus_lock); in sdw_stream_remove_slave()
1124 sdw_slave_port_release(slave->bus, slave, stream); in sdw_stream_remove_slave()
1125 sdw_release_slave_stream(slave, stream); in sdw_stream_remove_slave()
1127 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_remove_slave()
1139 * @is_slave: is API called from Slave or Master
1233 static int sdw_slave_port_config(struct sdw_slave *slave, in sdw_slave_port_config() argument
1243 p_rt = sdw_port_alloc(&slave->dev, port_config, i); in sdw_slave_port_config()
1249 * slave in sdw_slave_port_config()
1251 ret = sdw_is_valid_port_range(&slave->dev, p_rt); in sdw_slave_port_config()
1330 * sdw_stream_add_slave() - Allocate and add master/slave runtime to a stream
1332 * @slave: SDW Slave instance
1338 * It is expected that Slave is added before adding Master
1342 int sdw_stream_add_slave(struct sdw_slave *slave, in sdw_stream_add_slave() argument
1352 mutex_lock(&slave->bus->bus_lock); in sdw_stream_add_slave()
1355 * If this API is invoked by Slave first then m_rt is not valid. in sdw_stream_add_slave()
1356 * So, allocate m_rt and add Slave to it. in sdw_stream_add_slave()
1358 m_rt = sdw_alloc_master_rt(slave->bus, stream_config, stream); in sdw_stream_add_slave()
1360 dev_err(&slave->dev, in sdw_stream_add_slave()
1367 s_rt = sdw_alloc_slave_rt(slave, stream_config, stream); in sdw_stream_add_slave()
1369 dev_err(&slave->dev, in sdw_stream_add_slave()
1370 "Slave runtime config failed for stream:%s\n", in sdw_stream_add_slave()
1376 ret = sdw_config_stream(&slave->dev, stream, stream_config, true); in sdw_stream_add_slave()
1390 ret = sdw_slave_port_config(slave, s_rt, port_config, num_ports); in sdw_stream_add_slave()
1395 * Change stream state to CONFIGURED on first Slave add. in sdw_stream_add_slave()
1396 * Bus is not aware of number of Slave(s) in a stream at this in sdw_stream_add_slave()
1397 * point so cannot depend on all Slave(s) to be added in order to in sdw_stream_add_slave()
1405 * we hit error so cleanup the stream, release all Slave(s) and in sdw_stream_add_slave()
1410 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_add_slave()
1416 * sdw_get_slave_dpn_prop() - Get Slave port capabilities
1418 * @slave: Slave handle
1422 struct sdw_dpn_prop *sdw_get_slave_dpn_prop(struct sdw_slave *slave, in sdw_get_slave_dpn_prop() argument
1431 num_ports = hweight32(slave->prop.source_ports); in sdw_get_slave_dpn_prop()
1432 dpn_prop = slave->prop.src_dpn_prop; in sdw_get_slave_dpn_prop()
1434 num_ports = hweight32(slave->prop.sink_ports); in sdw_get_slave_dpn_prop()
1435 dpn_prop = slave->prop.sink_dpn_prop; in sdw_get_slave_dpn_prop()
1499 /* Prepare Master(s) and Slave(s) port(s) associated with stream */ in _sdw_prepare_stream()
1626 /* Enable Master(s) and Slave(s) port(s) associated with stream */ in _sdw_enable_stream()