• Home
  • Raw
  • Download

Lines Matching refs:bus

61 static int _sdw_program_slave_port_params(struct sdw_bus *bus,  in _sdw_program_slave_port_params()  argument
70 if (bus->params.next_bank) { in _sdw_program_slave_port_params()
85 dev_err(bus->dev, "DPN_OffsetCtrl2 register write failed\n"); in _sdw_program_slave_port_params()
92 dev_err(bus->dev, "DPN_BlockCtrl3 register write failed\n"); in _sdw_program_slave_port_params()
109 dev_err(bus->dev, "DPN_SampleCtrl2 register write failed\n"); in _sdw_program_slave_port_params()
119 dev_err(bus->dev, "DPN_HCtrl register write failed\n"); in _sdw_program_slave_port_params()
124 static int sdw_program_slave_port_params(struct sdw_bus *bus, in sdw_program_slave_port_params() argument
145 if (bus->params.next_bank) { in sdw_program_slave_port_params()
223 ret = _sdw_program_slave_port_params(bus, s_rt->slave, in sdw_program_slave_port_params()
234 static int sdw_program_master_port_params(struct sdw_bus *bus, in sdw_program_master_port_params() argument
245 ret = bus->port_ops->dpn_set_port_transport_params(bus, in sdw_program_master_port_params()
247 bus->params.next_bank); in sdw_program_master_port_params()
251 return bus->port_ops->dpn_set_port_params(bus, in sdw_program_master_port_params()
253 bus->params.next_bank); in sdw_program_master_port_params()
265 struct sdw_bus *bus = m_rt->bus; in sdw_program_port_params() local
272 ret = sdw_program_slave_port_params(bus, s_rt, p_rt); in sdw_program_port_params()
280 ret = sdw_program_master_port_params(bus, p_rt); in sdw_program_port_params()
299 static int sdw_enable_disable_slave_ports(struct sdw_bus *bus, in sdw_enable_disable_slave_ports() argument
308 if (bus->params.next_bank) in sdw_enable_disable_slave_ports()
335 struct sdw_bus *bus = m_rt->bus; in sdw_enable_disable_master_ports() local
344 if (bus->port_ops->dpn_port_enable_ch) { in sdw_enable_disable_master_ports()
345 ret = bus->port_ops->dpn_port_enable_ch(bus, in sdw_enable_disable_master_ports()
347 bus->params.next_bank); in sdw_enable_disable_master_ports()
349 dev_err(bus->dev, in sdw_enable_disable_master_ports()
355 dev_err(bus->dev, in sdw_enable_disable_master_ports()
380 ret = sdw_enable_disable_slave_ports(m_rt->bus, s_rt, in sdw_enable_disable_ports()
417 static int sdw_prep_deprep_slave_ports(struct sdw_bus *bus, in sdw_prep_deprep_slave_ports() argument
436 dev_err(bus->dev, in sdw_prep_deprep_slave_ports()
443 prep_ch.bank = bus->params.next_bank; in sdw_prep_deprep_slave_ports()
446 bus->params.s_data_mode != SDW_PORT_DATA_MODE_NORMAL) in sdw_prep_deprep_slave_ports()
509 struct sdw_bus *bus = m_rt->bus; in sdw_prep_deprep_master_ports() local
510 const struct sdw_master_port_ops *ops = bus->port_ops; in sdw_prep_deprep_master_ports()
517 prep_ch.bank = bus->params.next_bank; in sdw_prep_deprep_master_ports()
521 ret = ops->dpn_port_prep(bus, &prep_ch); in sdw_prep_deprep_master_ports()
523 dev_err(bus->dev, "Port prepare failed for port:%d\n", in sdw_prep_deprep_master_ports()
548 ret = sdw_prep_deprep_slave_ports(m_rt->bus, s_rt, in sdw_prep_deprep_ports()
576 struct sdw_bus *bus = m_rt->bus; in sdw_notify_config() local
580 if (bus->ops->set_bus_conf) { in sdw_notify_config()
581 ret = bus->ops->set_bus_conf(bus, &bus->params); 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()
609 static int sdw_program_params(struct sdw_bus *bus, bool prepare) in sdw_program_params() argument
614 list_for_each_entry(m_rt, &bus->m_rt_list, bus_node) { in sdw_program_params()
628 dev_err(bus->dev, in sdw_program_params()
635 dev_err(bus->dev, in sdw_program_params()
646 dev_err(bus->dev, "Enable channel failed: %d\n", ret); in sdw_program_params()
654 static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count) in sdw_bank_switch() argument
667 bus->defer_msg.msg = wr_msg; in sdw_bank_switch()
676 col_index = sdw_find_col_index(bus->params.col); in sdw_bank_switch()
677 row_index = sdw_find_row_index(bus->params.row); in sdw_bank_switch()
680 if (bus->params.next_bank) in sdw_bank_switch()
693 multi_link = bus->multi_link && (m_rt_count >= bus->hw_sync_min_links); in sdw_bank_switch()
696 ret = sdw_transfer_defer(bus, wr_msg, &bus->defer_msg); in sdw_bank_switch()
698 ret = sdw_transfer(bus, wr_msg); in sdw_bank_switch()
701 dev_err(bus->dev, "Slave frame_ctrl reg write failed\n"); in sdw_bank_switch()
708 bus->defer_msg.msg = NULL; in sdw_bank_switch()
709 bus->params.curr_bank = !bus->params.curr_bank; in sdw_bank_switch()
710 bus->params.next_bank = !bus->params.next_bank; in sdw_bank_switch()
719 bus->defer_msg.msg = NULL; in sdw_bank_switch()
730 static int sdw_ml_sync_bank_switch(struct sdw_bus *bus) in sdw_ml_sync_bank_switch() argument
734 if (!bus->multi_link) in sdw_ml_sync_bank_switch()
738 time_left = wait_for_completion_timeout(&bus->defer_msg.complete, in sdw_ml_sync_bank_switch()
739 bus->bank_switch_timeout); in sdw_ml_sync_bank_switch()
742 dev_err(bus->dev, "Controller Timed out on bank switch\n"); in sdw_ml_sync_bank_switch()
746 bus->params.curr_bank = !bus->params.curr_bank; in sdw_ml_sync_bank_switch()
747 bus->params.next_bank = !bus->params.next_bank; in sdw_ml_sync_bank_switch()
749 if (bus->defer_msg.msg) { in sdw_ml_sync_bank_switch()
750 kfree(bus->defer_msg.msg->buf); in sdw_ml_sync_bank_switch()
751 kfree(bus->defer_msg.msg); in sdw_ml_sync_bank_switch()
761 struct sdw_bus *bus; in do_bank_switch() local
769 bus = m_rt->bus; in do_bank_switch()
770 ops = bus->ops; in do_bank_switch()
772 if (bus->multi_link && m_rt_count >= bus->hw_sync_min_links) { in do_bank_switch()
774 mutex_lock(&bus->msg_lock); in do_bank_switch()
779 ret = ops->pre_bank_switch(bus); in do_bank_switch()
781 dev_err(bus->dev, in do_bank_switch()
793 ret = sdw_bank_switch(bus, m_rt_count); in do_bank_switch()
795 dev_err(bus->dev, "Bank switch failed: %d\n", ret); in do_bank_switch()
807 bus = m_rt->bus; in do_bank_switch()
808 ops = bus->ops; in do_bank_switch()
812 ret = ops->post_bank_switch(bus); in do_bank_switch()
814 dev_err(bus->dev, in do_bank_switch()
820 dev_err(bus->dev, in do_bank_switch()
826 if (!bus->bank_switch_timeout) in do_bank_switch()
827 bus->bank_switch_timeout = DEFAULT_BANK_SWITCH_TIMEOUT; in do_bank_switch()
830 ret = sdw_ml_sync_bank_switch(bus); in do_bank_switch()
832 dev_err(bus->dev, in do_bank_switch()
838 mutex_unlock(&bus->msg_lock); in do_bank_switch()
845 bus = m_rt->bus; in do_bank_switch()
846 if (bus->defer_msg.msg) { in do_bank_switch()
847 kfree(bus->defer_msg.msg->buf); in do_bank_switch()
848 kfree(bus->defer_msg.msg); in do_bank_switch()
856 bus = m_rt->bus; in do_bank_switch()
857 if (mutex_is_locked(&bus->msg_lock)) in do_bank_switch()
858 mutex_unlock(&bus->msg_lock); in do_bank_switch()
905 *sdw_find_master_rt(struct sdw_bus *bus, in sdw_find_master_rt() argument
912 if (m_rt->bus == bus) in sdw_find_master_rt()
929 *sdw_alloc_master_rt(struct sdw_bus *bus, in sdw_alloc_master_rt() argument
939 m_rt = sdw_find_master_rt(bus, stream); in sdw_alloc_master_rt()
952 list_add_tail(&m_rt->bus_node, &bus->m_rt_list); in sdw_alloc_master_rt()
956 m_rt->bus = bus; in sdw_alloc_master_rt()
991 static void sdw_master_port_release(struct sdw_bus *bus, in sdw_master_port_release() argument
1002 static void sdw_slave_port_release(struct sdw_bus *bus, in sdw_slave_port_release() argument
1068 sdw_slave_port_release(s_rt->slave->bus, s_rt->slave, stream); in sdw_release_master_stream()
1085 int sdw_stream_remove_master(struct sdw_bus *bus, in sdw_stream_remove_master() argument
1090 mutex_lock(&bus->bus_lock); in sdw_stream_remove_master()
1094 if (m_rt->bus != bus) in sdw_stream_remove_master()
1097 sdw_master_port_release(bus, m_rt); in sdw_stream_remove_master()
1105 mutex_unlock(&bus->bus_lock); in sdw_stream_remove_master()
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()
1127 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_remove_slave()
1208 static int sdw_master_port_config(struct sdw_bus *bus, in sdw_master_port_config() argument
1218 p_rt = sdw_port_alloc(bus->dev, port_config, i); in sdw_master_port_config()
1277 int sdw_stream_add_master(struct sdw_bus *bus, in sdw_stream_add_master() argument
1286 mutex_lock(&bus->bus_lock); in sdw_stream_add_master()
1293 if (!bus->multi_link && stream->m_rt_count > 0) { in sdw_stream_add_master()
1294 dev_err(bus->dev, in sdw_stream_add_master()
1295 "Multilink not supported, link %d\n", bus->link_id); in sdw_stream_add_master()
1300 m_rt = sdw_alloc_master_rt(bus, stream_config, stream); in sdw_stream_add_master()
1302 dev_err(bus->dev, in sdw_stream_add_master()
1309 ret = sdw_config_stream(bus->dev, stream, stream_config, false); in sdw_stream_add_master()
1313 ret = sdw_master_port_config(bus, m_rt, port_config, num_ports); in sdw_stream_add_master()
1324 mutex_unlock(&bus->bus_lock); in sdw_stream_add_master()
1352 mutex_lock(&slave->bus->bus_lock); in sdw_stream_add_slave()
1358 m_rt = sdw_alloc_master_rt(slave->bus, stream_config, stream); in sdw_stream_add_slave()
1410 mutex_unlock(&slave->bus->bus_lock); in sdw_stream_add_slave()
1459 struct sdw_bus *bus = NULL; in sdw_acquire_bus_lock() local
1463 bus = m_rt->bus; in sdw_acquire_bus_lock()
1465 mutex_lock(&bus->bus_lock); in sdw_acquire_bus_lock()
1481 struct sdw_bus *bus = NULL; in sdw_release_bus_lock() local
1485 bus = m_rt->bus; in sdw_release_bus_lock()
1486 mutex_unlock(&bus->bus_lock); in sdw_release_bus_lock()
1494 struct sdw_bus *bus = NULL; in _sdw_prepare_stream() local
1501 bus = m_rt->bus; in _sdw_prepare_stream()
1502 prop = &bus->prop; in _sdw_prepare_stream()
1503 memcpy(&params, &bus->params, sizeof(params)); in _sdw_prepare_stream()
1507 dev_err(bus->dev, "Async mode not supported\n"); in _sdw_prepare_stream()
1516 bus->params.bandwidth += m_rt->stream->params.rate * in _sdw_prepare_stream()
1520 if (bus->compute_params) { in _sdw_prepare_stream()
1521 ret = bus->compute_params(bus); in _sdw_prepare_stream()
1523 dev_err(bus->dev, "Compute params failed: %d", in _sdw_prepare_stream()
1531 ret = sdw_program_params(bus, true); in _sdw_prepare_stream()
1533 dev_err(bus->dev, "Program params failed: %d\n", ret); in _sdw_prepare_stream()
1538 if (!bus) { in _sdw_prepare_stream()
1545 dev_err(bus->dev, "Bank switch failed: %d\n", ret); in _sdw_prepare_stream()
1550 bus = m_rt->bus; in _sdw_prepare_stream()
1555 dev_err(bus->dev, "Prepare port(s) failed ret = %d\n", in _sdw_prepare_stream()
1566 memcpy(&bus->params, &params, sizeof(params)); in _sdw_prepare_stream()
1623 struct sdw_bus *bus = NULL; in _sdw_enable_stream() local
1628 bus = m_rt->bus; in _sdw_enable_stream()
1631 ret = sdw_program_params(bus, false); in _sdw_enable_stream()
1633 dev_err(bus->dev, "Program params failed: %d\n", ret); in _sdw_enable_stream()
1640 dev_err(bus->dev, in _sdw_enable_stream()
1646 if (!bus) { in _sdw_enable_stream()
1653 dev_err(bus->dev, "Bank switch failed: %d\n", ret); in _sdw_enable_stream()
1701 struct sdw_bus *bus = m_rt->bus; in _sdw_disable_stream() local
1706 dev_err(bus->dev, "Disable port(s) failed: %d\n", ret); in _sdw_disable_stream()
1713 struct sdw_bus *bus = m_rt->bus; in _sdw_disable_stream() local
1716 ret = sdw_program_params(bus, false); in _sdw_disable_stream()
1718 dev_err(bus->dev, "Program params failed: %d\n", ret); in _sdw_disable_stream()
1731 struct sdw_bus *bus = m_rt->bus; in _sdw_disable_stream() local
1736 dev_err(bus->dev, "Disable port(s) failed: %d\n", ret); in _sdw_disable_stream()
1780 struct sdw_bus *bus; in _sdw_deprepare_stream() local
1784 bus = m_rt->bus; in _sdw_deprepare_stream()
1788 dev_err(bus->dev, in _sdw_deprepare_stream()
1794 bus->params.bandwidth -= m_rt->stream->params.rate * in _sdw_deprepare_stream()
1798 if (bus->compute_params) { in _sdw_deprepare_stream()
1799 ret = bus->compute_params(bus); in _sdw_deprepare_stream()
1801 dev_err(bus->dev, "Compute params failed: %d", in _sdw_deprepare_stream()
1808 ret = sdw_program_params(bus, false); in _sdw_deprepare_stream()
1810 dev_err(bus->dev, "Program params failed: %d\n", ret); in _sdw_deprepare_stream()