Lines Matching refs:slave

172 	struct sdw_slave *slave = dev_to_sdw_dev(dev);  in sdw_delete_slave()  local
173 struct sdw_bus *bus = slave->bus; in sdw_delete_slave()
177 sdw_slave_debugfs_exit(slave); in sdw_delete_slave()
181 if (slave->dev_num) { /* clear dev_num if assigned */ in sdw_delete_slave()
182 clear_bit(slave->dev_num, bus->assigned); in sdw_delete_slave()
184 bus->ops->put_device_num(bus, slave); in sdw_delete_slave()
186 list_del_init(&slave->node); in sdw_delete_slave()
362 int sdw_fill_msg(struct sdw_msg *msg, struct sdw_slave *slave, in sdw_fill_msg() argument
381 if (slave && !slave->prop.paging_support) in sdw_fill_msg()
392 if (!slave) { in sdw_fill_msg()
397 if (!slave->prop.paging_support) { in sdw_fill_msg()
398 dev_err(&slave->dev, in sdw_fill_msg()
415 static int sdw_ntransfer_no_pm(struct sdw_slave *slave, u32 addr, u8 flags, in sdw_ntransfer_no_pm() argument
426 ret = sdw_fill_msg(&msg, slave, addr, size, slave->dev_num, flags, val); in sdw_ntransfer_no_pm()
430 ret = sdw_transfer(slave->bus, &msg); in sdw_ntransfer_no_pm()
431 if (ret < 0 && !slave->is_mockup_device) in sdw_ntransfer_no_pm()
452 int sdw_nread_no_pm(struct sdw_slave *slave, u32 addr, size_t count, u8 *val) in sdw_nread_no_pm() argument
454 return sdw_ntransfer_no_pm(slave, addr, SDW_MSG_FLAG_READ, count, val); in sdw_nread_no_pm()
468 int sdw_nwrite_no_pm(struct sdw_slave *slave, u32 addr, size_t count, const u8 *val) in sdw_nwrite_no_pm() argument
470 return sdw_ntransfer_no_pm(slave, addr, SDW_MSG_FLAG_WRITE, count, (u8 *)val); in sdw_nwrite_no_pm()
480 int sdw_write_no_pm(struct sdw_slave *slave, u32 addr, u8 value) in sdw_write_no_pm() argument
482 return sdw_nwrite_no_pm(slave, addr, 1, &value); in sdw_write_no_pm()
557 int sdw_read_no_pm(struct sdw_slave *slave, u32 addr) in sdw_read_no_pm() argument
562 ret = sdw_nread_no_pm(slave, addr, 1, &buf); in sdw_read_no_pm()
570 int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val) in sdw_update_no_pm() argument
574 tmp = sdw_read_no_pm(slave, addr); in sdw_update_no_pm()
579 return sdw_write_no_pm(slave, addr, tmp); in sdw_update_no_pm()
584 int sdw_update(struct sdw_slave *slave, u32 addr, u8 mask, u8 val) in sdw_update() argument
588 tmp = sdw_read(slave, addr); in sdw_update()
593 return sdw_write(slave, addr, tmp); in sdw_update()
609 int sdw_nread(struct sdw_slave *slave, u32 addr, size_t count, u8 *val) in sdw_nread() argument
613 ret = pm_runtime_get_sync(&slave->dev); in sdw_nread()
615 pm_runtime_put_noidle(&slave->dev); in sdw_nread()
619 ret = sdw_nread_no_pm(slave, addr, count, val); in sdw_nread()
621 pm_runtime_mark_last_busy(&slave->dev); in sdw_nread()
622 pm_runtime_put(&slave->dev); in sdw_nread()
640 int sdw_nwrite(struct sdw_slave *slave, u32 addr, size_t count, const u8 *val) in sdw_nwrite() argument
644 ret = pm_runtime_get_sync(&slave->dev); in sdw_nwrite()
646 pm_runtime_put_noidle(&slave->dev); in sdw_nwrite()
650 ret = sdw_nwrite_no_pm(slave, addr, count, val); in sdw_nwrite()
652 pm_runtime_mark_last_busy(&slave->dev); in sdw_nwrite()
653 pm_runtime_put(&slave->dev); in sdw_nwrite()
667 int sdw_read(struct sdw_slave *slave, u32 addr) in sdw_read() argument
672 ret = sdw_nread(slave, addr, 1, &buf); in sdw_read()
689 int sdw_write(struct sdw_slave *slave, u32 addr, u8 value) in sdw_write() argument
691 return sdw_nwrite(slave, addr, 1, &value); in sdw_write()
702 struct sdw_slave *slave; in sdw_get_slave() local
704 list_for_each_entry(slave, &bus->slaves, node) { in sdw_get_slave()
705 if (slave->dev_num == i) in sdw_get_slave()
706 return slave; in sdw_get_slave()
712 int sdw_compare_devid(struct sdw_slave *slave, struct sdw_slave_id id) in sdw_compare_devid() argument
714 if (slave->id.mfg_id != id.mfg_id || in sdw_compare_devid()
715 slave->id.part_id != id.part_id || in sdw_compare_devid()
716 slave->id.class_id != id.class_id || in sdw_compare_devid()
717 (slave->id.unique_id != SDW_IGNORED_UNIQUE_ID && in sdw_compare_devid()
718 slave->id.unique_id != id.unique_id)) in sdw_compare_devid()
726 static int sdw_get_device_num(struct sdw_slave *slave) in sdw_get_device_num() argument
728 struct sdw_bus *bus = slave->bus; in sdw_get_device_num()
732 bit = bus->ops->get_device_num(bus, slave); in sdw_get_device_num()
753 static int sdw_assign_device_num(struct sdw_slave *slave) in sdw_assign_device_num() argument
755 struct sdw_bus *bus = slave->bus; in sdw_assign_device_num()
760 if (!slave->dev_num) { in sdw_assign_device_num()
761 if (!slave->dev_num_sticky) { in sdw_assign_device_num()
764 mutex_lock(&slave->bus->bus_lock); in sdw_assign_device_num()
765 dev_num = sdw_get_device_num(slave); in sdw_assign_device_num()
766 mutex_unlock(&slave->bus->bus_lock); in sdw_assign_device_num()
772 slave->dev_num_sticky = dev_num; in sdw_assign_device_num()
775 slave->dev_num_sticky); in sdw_assign_device_num()
780 slave->dev_num = 0; in sdw_assign_device_num()
782 ret = sdw_write_no_pm(slave, SDW_SCP_DEVNUMBER, slave->dev_num_sticky); in sdw_assign_device_num()
785 slave->dev_num_sticky, ret); in sdw_assign_device_num()
790 slave->dev_num = slave->dev_num_sticky; in sdw_assign_device_num()
793 bus->ops->new_peripheral_assigned(bus, slave, slave->dev_num); in sdw_assign_device_num()
815 bool is_clock_scaling_supported_by_slave(struct sdw_slave *slave) in is_clock_scaling_supported_by_slave() argument
821 return slave->id.class_id; in is_clock_scaling_supported_by_slave()
828 struct sdw_slave *slave, *_s; in sdw_program_device_num() local
867 list_for_each_entry_safe(slave, _s, &bus->slaves, node) { in sdw_program_device_num()
868 if (sdw_compare_devid(slave, id) == 0) { in sdw_program_device_num()
878 if (slave->status != SDW_SLAVE_UNATTACHED) in sdw_program_device_num()
887 ret = sdw_assign_device_num(slave); in sdw_program_device_num()
928 static void sdw_modify_slave_status(struct sdw_slave *slave, in sdw_modify_slave_status() argument
931 struct sdw_bus *bus = slave->bus; in sdw_modify_slave_status()
937 slave->dev_num, slave->status, status); in sdw_modify_slave_status()
940 dev_dbg(&slave->dev, in sdw_modify_slave_status()
942 slave->dev_num); in sdw_modify_slave_status()
944 reinit_completion(&slave->enumeration_complete); in sdw_modify_slave_status()
945 reinit_completion(&slave->initialization_complete); in sdw_modify_slave_status()
948 (slave->status == SDW_SLAVE_UNATTACHED)) { in sdw_modify_slave_status()
949 dev_dbg(&slave->dev, in sdw_modify_slave_status()
951 slave->dev_num); in sdw_modify_slave_status()
953 complete_all(&slave->enumeration_complete); in sdw_modify_slave_status()
955 slave->status = status; in sdw_modify_slave_status()
959 static int sdw_slave_clk_stop_callback(struct sdw_slave *slave, in sdw_slave_clk_stop_callback() argument
965 mutex_lock(&slave->sdw_dev_lock); in sdw_slave_clk_stop_callback()
967 if (slave->probed) { in sdw_slave_clk_stop_callback()
968 struct device *dev = &slave->dev; in sdw_slave_clk_stop_callback()
972 ret = drv->ops->clk_stop(slave, mode, type); in sdw_slave_clk_stop_callback()
975 mutex_unlock(&slave->sdw_dev_lock); in sdw_slave_clk_stop_callback()
980 static int sdw_slave_clk_stop_prepare(struct sdw_slave *slave, in sdw_slave_clk_stop_prepare() argument
988 wake_en = slave->prop.wake_capable; in sdw_slave_clk_stop_prepare()
999 ret = sdw_read_no_pm(slave, SDW_SCP_SYSTEMCTRL); in sdw_slave_clk_stop_prepare()
1002 dev_err(&slave->dev, "SDW_SCP_SYSTEMCTRL read failed:%d\n", ret); in sdw_slave_clk_stop_prepare()
1009 ret = sdw_write_no_pm(slave, SDW_SCP_SYSTEMCTRL, val); in sdw_slave_clk_stop_prepare()
1012 dev_err(&slave->dev, "SDW_SCP_SYSTEMCTRL write failed:%d\n", ret); in sdw_slave_clk_stop_prepare()
1058 struct sdw_slave *slave; in sdw_bus_prep_clk_stop() local
1070 list_for_each_entry(slave, &bus->slaves, node) { in sdw_bus_prep_clk_stop()
1071 if (!slave->dev_num) in sdw_bus_prep_clk_stop()
1074 if (slave->status != SDW_SLAVE_ATTACHED && in sdw_bus_prep_clk_stop()
1075 slave->status != SDW_SLAVE_ALERT) in sdw_bus_prep_clk_stop()
1081 ret = sdw_slave_clk_stop_callback(slave, in sdw_bus_prep_clk_stop()
1085 dev_err(&slave->dev, "clock stop pre-prepare cb failed:%d\n", ret); in sdw_bus_prep_clk_stop()
1090 if (!slave->prop.simple_clk_stop_capable) { in sdw_bus_prep_clk_stop()
1093 ret = sdw_slave_clk_stop_prepare(slave, in sdw_bus_prep_clk_stop()
1097 dev_err(&slave->dev, "clock stop prepare failed:%d\n", ret); in sdw_bus_prep_clk_stop()
1125 list_for_each_entry(slave, &bus->slaves, node) { in sdw_bus_prep_clk_stop()
1126 if (!slave->dev_num) in sdw_bus_prep_clk_stop()
1129 if (slave->status != SDW_SLAVE_ATTACHED && in sdw_bus_prep_clk_stop()
1130 slave->status != SDW_SLAVE_ALERT) in sdw_bus_prep_clk_stop()
1133 ret = sdw_slave_clk_stop_callback(slave, in sdw_bus_prep_clk_stop()
1138 dev_err(&slave->dev, "clock stop post-prepare cb failed:%d\n", ret); in sdw_bus_prep_clk_stop()
1187 struct sdw_slave *slave; in sdw_bus_exit_clk_stop() local
1196 list_for_each_entry(slave, &bus->slaves, node) { in sdw_bus_exit_clk_stop()
1197 if (!slave->dev_num) in sdw_bus_exit_clk_stop()
1200 if (slave->status != SDW_SLAVE_ATTACHED && in sdw_bus_exit_clk_stop()
1201 slave->status != SDW_SLAVE_ALERT) in sdw_bus_exit_clk_stop()
1207 ret = sdw_slave_clk_stop_callback(slave, SDW_CLK_STOP_MODE0, in sdw_bus_exit_clk_stop()
1210 dev_warn(&slave->dev, "clock stop pre-deprepare cb failed:%d\n", ret); in sdw_bus_exit_clk_stop()
1213 if (!slave->prop.simple_clk_stop_capable) { in sdw_bus_exit_clk_stop()
1216 ret = sdw_slave_clk_stop_prepare(slave, SDW_CLK_STOP_MODE0, in sdw_bus_exit_clk_stop()
1220 dev_warn(&slave->dev, "clock stop deprepare failed:%d\n", ret); in sdw_bus_exit_clk_stop()
1238 list_for_each_entry(slave, &bus->slaves, node) { in sdw_bus_exit_clk_stop()
1239 if (!slave->dev_num) in sdw_bus_exit_clk_stop()
1242 if (slave->status != SDW_SLAVE_ATTACHED && in sdw_bus_exit_clk_stop()
1243 slave->status != SDW_SLAVE_ALERT) in sdw_bus_exit_clk_stop()
1246 ret = sdw_slave_clk_stop_callback(slave, SDW_CLK_STOP_MODE0, in sdw_bus_exit_clk_stop()
1249 dev_warn(&slave->dev, "clock stop post-deprepare cb failed:%d\n", ret); in sdw_bus_exit_clk_stop()
1256 int sdw_configure_dpn_intr(struct sdw_slave *slave, in sdw_configure_dpn_intr() argument
1263 if (slave->bus->params.s_data_mode != SDW_PORT_DATA_MODE_NORMAL) { in sdw_configure_dpn_intr()
1264 dev_dbg(&slave->dev, "TEST FAIL interrupt %s\n", in sdw_configure_dpn_intr()
1280 ret = sdw_update_no_pm(slave, addr, (mask | SDW_DPN_INT_PORT_READY), val); in sdw_configure_dpn_intr()
1282 dev_err(&slave->dev, in sdw_configure_dpn_intr()
1288 int sdw_slave_get_scale_index(struct sdw_slave *slave, u8 *base) in sdw_slave_get_scale_index() argument
1290 u32 mclk_freq = slave->bus->prop.mclk_freq; in sdw_slave_get_scale_index()
1291 u32 curr_freq = slave->bus->params.curr_dr_freq >> 1; in sdw_slave_get_scale_index()
1296 dev_err(&slave->dev, in sdw_slave_get_scale_index()
1326 dev_err(&slave->dev, in sdw_slave_get_scale_index()
1333 dev_err(&slave->dev, in sdw_slave_get_scale_index()
1348 dev_err(&slave->dev, in sdw_slave_get_scale_index()
1355 dev_dbg(&slave->dev, in sdw_slave_get_scale_index()
1363 int sdw_slave_get_current_bank(struct sdw_slave *slave) in sdw_slave_get_current_bank() argument
1367 tmp = sdw_read(slave, SDW_SCP_CTRL); in sdw_slave_get_current_bank()
1375 static int sdw_slave_set_frequency(struct sdw_slave *slave) in sdw_slave_set_frequency() argument
1388 if (!slave->id.class_id && !slave->prop.clock_reg_supported) in sdw_slave_set_frequency()
1391 scale_index = sdw_slave_get_scale_index(slave, &base); in sdw_slave_set_frequency()
1395 ret = sdw_write_no_pm(slave, SDW_SCP_BUS_CLOCK_BASE, base); in sdw_slave_set_frequency()
1397 dev_err(&slave->dev, in sdw_slave_set_frequency()
1403 ret = sdw_write_no_pm(slave, SDW_SCP_BUSCLOCK_SCALE_B0, scale_index); in sdw_slave_set_frequency()
1405 dev_err(&slave->dev, in sdw_slave_set_frequency()
1409 ret = sdw_write_no_pm(slave, SDW_SCP_BUSCLOCK_SCALE_B1, scale_index); in sdw_slave_set_frequency()
1411 dev_err(&slave->dev, in sdw_slave_set_frequency()
1417 static int sdw_initialize_slave(struct sdw_slave *slave) in sdw_initialize_slave() argument
1419 struct sdw_slave_prop *prop = &slave->prop; in sdw_initialize_slave()
1424 ret = sdw_slave_set_frequency(slave); in sdw_initialize_slave()
1428 if (slave->bus->prop.quirks & SDW_MASTER_QUIRKS_CLEAR_INITIAL_CLASH) { in sdw_initialize_slave()
1430 status = sdw_read_no_pm(slave, SDW_SCP_INT1); in sdw_initialize_slave()
1432 dev_err(&slave->dev, in sdw_initialize_slave()
1437 dev_warn(&slave->dev, "Bus clash detected before INT mask is enabled\n"); in sdw_initialize_slave()
1438 ret = sdw_write_no_pm(slave, SDW_SCP_INT1, SDW_SCP_INT1_BUS_CLASH); in sdw_initialize_slave()
1440 dev_err(&slave->dev, in sdw_initialize_slave()
1446 if ((slave->bus->prop.quirks & SDW_MASTER_QUIRKS_CLEAR_INITIAL_PARITY) && in sdw_initialize_slave()
1449 status = sdw_read_no_pm(slave, SDW_SCP_INT1); in sdw_initialize_slave()
1451 dev_err(&slave->dev, in sdw_initialize_slave()
1456 dev_warn(&slave->dev, "PARITY error detected before INT mask is enabled\n"); in sdw_initialize_slave()
1457 ret = sdw_write_no_pm(slave, SDW_SCP_INT1, SDW_SCP_INT1_PARITY); in sdw_initialize_slave()
1459 dev_err(&slave->dev, in sdw_initialize_slave()
1476 ret = sdw_update_no_pm(slave, SDW_SCP_INTMASK1, val, val); in sdw_initialize_slave()
1478 dev_err(&slave->dev, in sdw_initialize_slave()
1491 ret = sdw_update_no_pm(slave, SDW_DP0_INTMASK, val, val); in sdw_initialize_slave()
1493 dev_err(&slave->dev, in sdw_initialize_slave()
1498 static int sdw_handle_dp0_interrupt(struct sdw_slave *slave, u8 *slave_status) in sdw_handle_dp0_interrupt() argument
1503 status = sdw_read_no_pm(slave, SDW_DP0_INT); in sdw_handle_dp0_interrupt()
1505 dev_err(&slave->dev, in sdw_handle_dp0_interrupt()
1514 dev_err(&slave->dev, "Test fail for port 0\n"); in sdw_handle_dp0_interrupt()
1524 complete(&slave->port_ready[0]); in sdw_handle_dp0_interrupt()
1529 dev_err(&slave->dev, "BRA failed\n"); in sdw_handle_dp0_interrupt()
1542 ret = sdw_write_no_pm(slave, SDW_DP0_INT, clear); in sdw_handle_dp0_interrupt()
1544 dev_err(&slave->dev, in sdw_handle_dp0_interrupt()
1550 status2 = sdw_read_no_pm(slave, SDW_DP0_INT); in sdw_handle_dp0_interrupt()
1552 dev_err(&slave->dev, in sdw_handle_dp0_interrupt()
1565 dev_warn(&slave->dev, "Reached MAX_RETRY on DP0 read\n"); in sdw_handle_dp0_interrupt()
1570 static int sdw_handle_port_interrupt(struct sdw_slave *slave, in sdw_handle_port_interrupt() argument
1578 return sdw_handle_dp0_interrupt(slave, slave_status); in sdw_handle_port_interrupt()
1581 status = sdw_read_no_pm(slave, addr); in sdw_handle_port_interrupt()
1583 dev_err(&slave->dev, in sdw_handle_port_interrupt()
1593 dev_err(&slave->dev, "Test fail for port:%d\n", port); in sdw_handle_port_interrupt()
1602 complete(&slave->port_ready[port]); in sdw_handle_port_interrupt()
1615 ret = sdw_write_no_pm(slave, addr, clear); in sdw_handle_port_interrupt()
1617 dev_err(&slave->dev, in sdw_handle_port_interrupt()
1623 status2 = sdw_read_no_pm(slave, addr); in sdw_handle_port_interrupt()
1625 dev_err(&slave->dev, in sdw_handle_port_interrupt()
1638 dev_warn(&slave->dev, "Reached MAX_RETRY on port read"); in sdw_handle_port_interrupt()
1643 static int sdw_handle_slave_alerts(struct sdw_slave *slave) in sdw_handle_slave_alerts() argument
1655 sdw_modify_slave_status(slave, SDW_SLAVE_ALERT); in sdw_handle_slave_alerts()
1657 ret = pm_runtime_get_sync(&slave->dev); in sdw_handle_slave_alerts()
1659 dev_err(&slave->dev, "Failed to resume device: %d\n", ret); in sdw_handle_slave_alerts()
1660 pm_runtime_put_noidle(&slave->dev); in sdw_handle_slave_alerts()
1665 ret = sdw_read_no_pm(slave, SDW_SCP_INT1); in sdw_handle_slave_alerts()
1667 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1673 ret = sdw_nread_no_pm(slave, SDW_SCP_INTSTAT2, 2, buf2); in sdw_handle_slave_alerts()
1675 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1680 if (slave->id.class_id) { in sdw_handle_slave_alerts()
1681 ret = sdw_read_no_pm(slave, SDW_DP0_INT); in sdw_handle_slave_alerts()
1683 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1698 parity_check = slave->prop.scp_int1_mask & SDW_SCP_INT1_PARITY; in sdw_handle_slave_alerts()
1699 parity_quirk = !slave->first_interrupt_done && in sdw_handle_slave_alerts()
1700 (slave->prop.quirks & SDW_SLAVE_QUIRKS_INVALID_INITIAL_PARITY); in sdw_handle_slave_alerts()
1703 dev_err(&slave->dev, "Parity error detected\n"); in sdw_handle_slave_alerts()
1708 if (slave->prop.scp_int1_mask & SDW_SCP_INT1_BUS_CLASH) in sdw_handle_slave_alerts()
1709 dev_err(&slave->dev, "Bus clash detected\n"); in sdw_handle_slave_alerts()
1721 if (slave->prop.scp_int1_mask & SDW_SCP_INT1_IMPL_DEF) { in sdw_handle_slave_alerts()
1722 dev_dbg(&slave->dev, "Slave impl defined interrupt\n"); in sdw_handle_slave_alerts()
1738 sdw_handle_port_interrupt(slave, bit, in sdw_handle_slave_alerts()
1748 sdw_handle_port_interrupt(slave, in sdw_handle_slave_alerts()
1760 sdw_handle_port_interrupt(slave, in sdw_handle_slave_alerts()
1768 if (slave->prop.use_domain_irq && slave->irq) in sdw_handle_slave_alerts()
1769 handle_nested_irq(slave->irq); in sdw_handle_slave_alerts()
1771 mutex_lock(&slave->sdw_dev_lock); in sdw_handle_slave_alerts()
1773 if (slave->probed) { in sdw_handle_slave_alerts()
1774 struct device *dev = &slave->dev; in sdw_handle_slave_alerts()
1783 drv->ops->interrupt_callback(slave, &slave_intr); in sdw_handle_slave_alerts()
1787 mutex_unlock(&slave->sdw_dev_lock); in sdw_handle_slave_alerts()
1791 ret = sdw_write_no_pm(slave, SDW_SCP_INT1, clear); in sdw_handle_slave_alerts()
1793 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1799 slave->first_interrupt_done = true; in sdw_handle_slave_alerts()
1805 ret = sdw_read_no_pm(slave, SDW_SCP_INT1); in sdw_handle_slave_alerts()
1807 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1813 ret = sdw_nread_no_pm(slave, SDW_SCP_INTSTAT2, 2, buf2); in sdw_handle_slave_alerts()
1815 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1820 if (slave->id.class_id) { in sdw_handle_slave_alerts()
1821 ret = sdw_read_no_pm(slave, SDW_DP0_INT); in sdw_handle_slave_alerts()
1823 dev_err(&slave->dev, in sdw_handle_slave_alerts()
1845 dev_warn(&slave->dev, "Reached MAX_RETRY on alert read\n"); in sdw_handle_slave_alerts()
1848 pm_runtime_mark_last_busy(&slave->dev); in sdw_handle_slave_alerts()
1849 pm_runtime_put_autosuspend(&slave->dev); in sdw_handle_slave_alerts()
1854 static int sdw_update_slave_status(struct sdw_slave *slave, in sdw_update_slave_status() argument
1859 mutex_lock(&slave->sdw_dev_lock); in sdw_update_slave_status()
1861 if (slave->probed) { in sdw_update_slave_status()
1862 struct device *dev = &slave->dev; in sdw_update_slave_status()
1866 ret = drv->ops->update_status(slave, status); in sdw_update_slave_status()
1869 mutex_unlock(&slave->sdw_dev_lock); in sdw_update_slave_status()
1883 struct sdw_slave *slave; in sdw_handle_slave_status() local
1896 slave = sdw_get_slave(bus, i); in sdw_handle_slave_status()
1897 if (!slave) in sdw_handle_slave_status()
1901 slave->status != SDW_SLAVE_UNATTACHED) { in sdw_handle_slave_status()
1902 dev_warn(&slave->dev, "Slave %d state check1: UNATTACHED, status was %d\n", in sdw_handle_slave_status()
1903 i, slave->status); in sdw_handle_slave_status()
1904 sdw_modify_slave_status(slave, SDW_SLAVE_UNATTACHED); in sdw_handle_slave_status()
1907 ret = sdw_update_slave_status(slave, status[i]); in sdw_handle_slave_status()
1909 dev_warn(&slave->dev, "Update Slave status failed:%d\n", ret); in sdw_handle_slave_status()
1943 slave = sdw_get_slave(bus, i); in sdw_handle_slave_status()
1944 if (!slave) in sdw_handle_slave_status()
1951 if (slave->status == SDW_SLAVE_UNATTACHED) in sdw_handle_slave_status()
1954 dev_warn(&slave->dev, "Slave %d state check2: UNATTACHED, status was %d\n", in sdw_handle_slave_status()
1955 i, slave->status); in sdw_handle_slave_status()
1957 sdw_modify_slave_status(slave, SDW_SLAVE_UNATTACHED); in sdw_handle_slave_status()
1961 ret = sdw_handle_slave_alerts(slave); in sdw_handle_slave_status()
1963 dev_err(&slave->dev, in sdw_handle_slave_status()
1969 if (slave->status == SDW_SLAVE_ATTACHED) in sdw_handle_slave_status()
1972 prev_status = slave->status; in sdw_handle_slave_status()
1973 sdw_modify_slave_status(slave, SDW_SLAVE_ATTACHED); in sdw_handle_slave_status()
1980 ret = sdw_initialize_slave(slave); in sdw_handle_slave_status()
1982 dev_err(&slave->dev, in sdw_handle_slave_status()
1989 dev_err(&slave->dev, "Invalid slave %d status:%d\n", in sdw_handle_slave_status()
1994 ret = sdw_update_slave_status(slave, status[i]); in sdw_handle_slave_status()
1996 dev_err(&slave->dev, in sdw_handle_slave_status()
1999 dev_dbg(&slave->dev, in sdw_handle_slave_status()
2001 slave->dev_num); in sdw_handle_slave_status()
2003 complete_all(&slave->initialization_complete); in sdw_handle_slave_status()
2015 pm_request_resume(&slave->dev); in sdw_handle_slave_status()
2025 struct sdw_slave *slave; in sdw_clear_slave_status() local
2037 slave = sdw_get_slave(bus, i); in sdw_clear_slave_status()
2038 if (!slave) in sdw_clear_slave_status()
2041 if (slave->status != SDW_SLAVE_UNATTACHED) { in sdw_clear_slave_status()
2042 sdw_modify_slave_status(slave, SDW_SLAVE_UNATTACHED); in sdw_clear_slave_status()
2043 slave->first_interrupt_done = false; in sdw_clear_slave_status()
2044 sdw_update_slave_status(slave, SDW_SLAVE_UNATTACHED); in sdw_clear_slave_status()
2048 slave->unattach_request = request; in sdw_clear_slave_status()
2053 int sdw_bpt_send_async(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_bpt_msg *msg) in sdw_bpt_send_async() argument
2067 if (slave->dev_num == SDW_ENUM_DEV_NUM || in sdw_bpt_send_async()
2068 slave->dev_num > SDW_MAX_DEVICES) { in sdw_bpt_send_async()
2069 dev_err(&slave->dev, "Invalid device number %d\n", slave->dev_num); in sdw_bpt_send_async()
2080 return bus->ops->bpt_send_async(bus, slave, msg); in sdw_bpt_send_async()
2084 int sdw_bpt_wait(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_bpt_msg *msg) in sdw_bpt_wait() argument
2086 return bus->ops->bpt_wait(bus, slave, msg); in sdw_bpt_wait()
2090 int sdw_bpt_send_sync(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_bpt_msg *msg) in sdw_bpt_send_sync() argument
2094 ret = sdw_bpt_send_async(bus, slave, msg); in sdw_bpt_send_sync()
2098 return sdw_bpt_wait(bus, slave, msg); in sdw_bpt_send_sync()