Lines Matching refs:slave
64 struct sdw_slave *slave, in _sdw_program_slave_port_params() argument
85 ret = sdw_write_no_pm(slave, addr1, t_params->offset2); in _sdw_program_slave_port_params()
94 ret = sdw_write_no_pm(slave, addr2, t_params->blk_pkg_mode); in _sdw_program_slave_port_params()
112 ret = sdw_write_no_pm(slave, addr3, wbuf); in _sdw_program_slave_port_params()
122 ret = sdw_write_no_pm(slave, addr4, wbuf); in _sdw_program_slave_port_params()
135 struct sdw_slave_prop *slave_prop = &s_rt->slave->prop; in sdw_program_slave_port_params()
142 if (s_rt->slave->is_mockup_device) in sdw_program_slave_port_params()
148 dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, s_rt->direction, in sdw_program_slave_port_params()
180 ret = sdw_update_no_pm(s_rt->slave, addr1, 0xF, wbuf); in sdw_program_slave_port_params()
182 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
190 ret = sdw_write_no_pm(s_rt->slave, addr2, (p_params->bps - 1)); in sdw_program_slave_port_params()
192 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
201 ret = sdw_write_no_pm(s_rt->slave, addr3, wbuf); in sdw_program_slave_port_params()
203 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
210 ret = sdw_write_no_pm(s_rt->slave, addr4, t_params->offset1); in sdw_program_slave_port_params()
212 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
220 ret = sdw_write_no_pm(s_rt->slave, addr5, t_params->blk_grp_ctrl); in sdw_program_slave_port_params()
222 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
231 ret = sdw_write_no_pm(s_rt->slave, addr6, t_params->lane_ctrl); in sdw_program_slave_port_params()
233 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
241 ret = _sdw_program_slave_port_params(bus, s_rt->slave, in sdw_program_slave_port_params()
244 dev_err(&s_rt->slave->dev, in sdw_program_slave_port_params()
336 ret = sdw_write_no_pm(s_rt->slave, addr, p_rt->ch_mask); in sdw_enable_disable_slave_ports()
338 ret = sdw_write_no_pm(s_rt->slave, addr, 0x0); in sdw_enable_disable_slave_ports()
341 dev_err(&s_rt->slave->dev, in sdw_enable_disable_slave_ports()
420 struct sdw_slave *slave = s_rt->slave; in sdw_do_port_prep() local
422 mutex_lock(&slave->sdw_dev_lock); in sdw_do_port_prep()
424 if (slave->probed) { in sdw_do_port_prep()
425 struct device *dev = &slave->dev; in sdw_do_port_prep()
429 ret = drv->ops->port_prep(slave, &prep_ch, cmd); in sdw_do_port_prep()
436 mutex_unlock(&slave->sdw_dev_lock); in sdw_do_port_prep()
460 dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, s_rt->direction, prep_ch.num); in sdw_prep_deprep_slave_ports()
471 struct sdw_dp0_prop *dp0_prop = s_rt->slave->prop.dp0_prop; in sdw_prep_deprep_slave_ports()
497 ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, in sdw_prep_deprep_slave_ports()
511 ret = sdw_write_no_pm(s_rt->slave, addr, p_rt->ch_mask); in sdw_prep_deprep_slave_ports()
513 ret = sdw_write_no_pm(s_rt->slave, addr, 0x0); in sdw_prep_deprep_slave_ports()
516 dev_err(&s_rt->slave->dev, in sdw_prep_deprep_slave_ports()
522 port_ready = &s_rt->slave->port_ready[prep_ch.num]; in sdw_prep_deprep_slave_ports()
526 val = sdw_read_no_pm(s_rt->slave, SDW_DPN_PREPARESTATUS(p_rt->num)); in sdw_prep_deprep_slave_ports()
529 dev_err(&s_rt->slave->dev, in sdw_prep_deprep_slave_ports()
540 ret = sdw_configure_dpn_intr(s_rt->slave, p_rt->num, prep, in sdw_prep_deprep_slave_ports()
619 struct sdw_slave *slave; in sdw_notify_config() local
629 slave = s_rt->slave; in sdw_notify_config()
631 mutex_lock(&slave->sdw_dev_lock); in sdw_notify_config()
633 if (slave->probed) { in sdw_notify_config()
634 struct device *dev = &slave->dev; in sdw_notify_config()
638 ret = drv->ops->bus_config(slave, &bus->params); in sdw_notify_config()
641 slave->dev_num); in sdw_notify_config()
642 mutex_unlock(&slave->sdw_dev_lock); in sdw_notify_config()
648 mutex_unlock(&slave->sdw_dev_lock); in sdw_notify_config()
664 struct sdw_slave *slave; in sdw_program_params() local
669 list_for_each_entry(slave, &bus->slaves, node) { in sdw_program_params()
670 if (!slave->dev_num_sticky) in sdw_program_params()
672 if (!is_clock_scaling_supported_by_slave(slave)) { in sdw_program_params()
673 dev_dbg(&slave->dev, "The Peripheral doesn't comply with SDCA\n"); in sdw_program_params()
684 list_for_each_entry(slave, &bus->slaves, node) { in sdw_program_params()
688 if (!slave->dev_num_sticky) in sdw_program_params()
690 scale_index = sdw_slave_get_scale_index(slave, &base); in sdw_program_params()
694 ret = sdw_write_no_pm(slave, addr1, scale_index); in sdw_program_params()
696 dev_err(&slave->dev, "SDW_SCP_BUSCLOCK_SCALE register write failed\n"); in sdw_program_params()
993 static void sdw_slave_port_free(struct sdw_slave *slave, in sdw_slave_port_free() argument
1002 if (s_rt->slave != slave) in sdw_slave_port_free()
1013 static int sdw_slave_port_alloc(struct sdw_slave *slave, in sdw_slave_port_alloc() argument
1040 static int sdw_slave_port_config(struct sdw_slave *slave, in sdw_slave_port_config() argument
1056 ret = sdw_slave_port_is_valid_range(&slave->dev, port_config[i].num); in sdw_slave_port_config()
1129 *sdw_slave_rt_alloc(struct sdw_slave *slave, in sdw_slave_rt_alloc() argument
1139 s_rt->slave = slave; in sdw_slave_rt_alloc()
1163 static struct sdw_slave_runtime *sdw_slave_rt_find(struct sdw_slave *slave, in sdw_slave_rt_find() argument
1173 if (s_rt->slave == slave) in sdw_slave_rt_find()
1188 static void sdw_slave_rt_free(struct sdw_slave *slave, in sdw_slave_rt_free() argument
1193 s_rt = sdw_slave_rt_find(slave, stream); in sdw_slave_rt_free()
1314 sdw_slave_port_free(s_rt->slave, stream); in sdw_master_rt_free()
1315 sdw_slave_rt_free(s_rt->slave, stream); in sdw_master_rt_free()
1380 struct sdw_dpn_prop *sdw_get_slave_dpn_prop(struct sdw_slave *slave, in sdw_get_slave_dpn_prop() argument
1389 dev_err(&slave->dev, "%s: port_num is zero\n", __func__); in sdw_get_slave_dpn_prop()
1394 num_ports = hweight32(slave->prop.source_ports); in sdw_get_slave_dpn_prop()
1395 dpn_prop = slave->prop.src_dpn_prop; in sdw_get_slave_dpn_prop()
1397 num_ports = hweight32(slave->prop.sink_ports); in sdw_get_slave_dpn_prop()
1398 dpn_prop = slave->prop.sink_dpn_prop; in sdw_get_slave_dpn_prop()
2117 int sdw_stream_add_slave(struct sdw_slave *slave, in sdw_stream_add_slave() argument
2130 mutex_lock(&slave->bus->bus_lock); in sdw_stream_add_slave()
2136 m_rt = sdw_master_rt_find(slave->bus, stream); in sdw_stream_add_slave()
2142 m_rt = sdw_master_rt_alloc(slave->bus, stream); in sdw_stream_add_slave()
2145 dev_err(&slave->dev, "%s: Master runtime alloc failed for stream:%s: %d\n", in sdw_stream_add_slave()
2150 dev_err(&slave->dev, "%s: Master runtime alloc failed for stream:%s\n", in sdw_stream_add_slave()
2159 s_rt = sdw_slave_rt_find(slave, stream); in sdw_stream_add_slave()
2161 s_rt = sdw_slave_rt_alloc(slave, m_rt); in sdw_stream_add_slave()
2163 dev_err(&slave->dev, "Slave runtime alloc failed for stream:%s\n", in sdw_stream_add_slave()
2173 ret = sdw_slave_port_alloc(slave, s_rt, num_ports); in sdw_stream_add_slave()
2186 ret = sdw_config_stream(&slave->dev, stream, stream_config, true); in sdw_stream_add_slave()
2190 ret = sdw_slave_port_config(slave, s_rt, port_config, in sdw_stream_add_slave()
2213 sdw_slave_rt_free(slave, stream); in sdw_stream_add_slave()
2215 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_add_slave()
2228 int sdw_stream_remove_slave(struct sdw_slave *slave, in sdw_stream_remove_slave() argument
2231 mutex_lock(&slave->bus->bus_lock); in sdw_stream_remove_slave()
2233 sdw_slave_port_free(slave, stream); in sdw_stream_remove_slave()
2234 sdw_slave_rt_free(slave, stream); in sdw_stream_remove_slave()
2236 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_remove_slave()