@@ -1054,6 +1054,33 @@ static int sdw_slave_rt_config(struct sdw_slave_runtime *s_rt,
10541054 return 0 ;
10551055}
10561056
1057+ /**
1058+ * sdw_slave_rt_free() - Free Slave(s) runtime handle
1059+ *
1060+ * @slave: Slave handle.
1061+ * @stream: Stream runtime handle.
1062+ *
1063+ * This function is to be called with bus_lock held.
1064+ */
1065+ static void sdw_slave_rt_free (struct sdw_slave * slave ,
1066+ struct sdw_stream_runtime * stream )
1067+ {
1068+ struct sdw_slave_runtime * s_rt , * _s_rt ;
1069+ struct sdw_master_runtime * m_rt ;
1070+
1071+ list_for_each_entry (m_rt , & stream -> master_list , stream_node ) {
1072+ /* Retrieve Slave runtime handle */
1073+ list_for_each_entry_safe (s_rt , _s_rt ,
1074+ & m_rt -> slave_rt_list , m_rt_node ) {
1075+ if (s_rt -> slave == slave ) {
1076+ list_del (& s_rt -> m_rt_node );
1077+ kfree (s_rt );
1078+ return ;
1079+ }
1080+ }
1081+ }
1082+ }
1083+
10571084static struct sdw_master_runtime
10581085* sdw_master_rt_find (struct sdw_bus * bus ,
10591086 struct sdw_stream_runtime * stream )
@@ -1119,51 +1146,24 @@ static int sdw_master_rt_config(struct sdw_master_runtime *m_rt,
11191146}
11201147
11211148/**
1122- * sdw_release_slave_stream() - Free Slave(s) runtime handle
1123- *
1124- * @slave: Slave handle.
1125- * @stream: Stream runtime handle.
1126- *
1127- * This function is to be called with bus_lock held.
1128- */
1129- static void sdw_release_slave_stream (struct sdw_slave * slave ,
1130- struct sdw_stream_runtime * stream )
1131- {
1132- struct sdw_slave_runtime * s_rt , * _s_rt ;
1133- struct sdw_master_runtime * m_rt ;
1134-
1135- list_for_each_entry (m_rt , & stream -> master_list , stream_node ) {
1136- /* Retrieve Slave runtime handle */
1137- list_for_each_entry_safe (s_rt , _s_rt ,
1138- & m_rt -> slave_rt_list , m_rt_node ) {
1139- if (s_rt -> slave == slave ) {
1140- list_del (& s_rt -> m_rt_node );
1141- kfree (s_rt );
1142- return ;
1143- }
1144- }
1145- }
1146- }
1147-
1148- /**
1149- * sdw_release_master_stream() - Free Master runtime handle
1149+ * sdw_master_rt_free() - Free Master runtime handle
11501150 *
11511151 * @m_rt: Master runtime node
11521152 * @stream: Stream runtime handle.
11531153 *
11541154 * This function is to be called with bus_lock held
11551155 * It frees the Master runtime handle and associated Slave(s) runtime
1156- * handle. If this is called first then sdw_release_slave_stream () will have
1156+ * handle. If this is called first then sdw_slave_rt_free () will have
11571157 * no effect as Slave(s) runtime handle would already be freed up.
11581158 */
1159- static void sdw_release_master_stream (struct sdw_master_runtime * m_rt ,
1160- struct sdw_stream_runtime * stream )
1159+ static void sdw_master_rt_free (struct sdw_master_runtime * m_rt ,
1160+ struct sdw_stream_runtime * stream )
11611161{
11621162 struct sdw_slave_runtime * s_rt , * _s_rt ;
11631163
11641164 list_for_each_entry_safe (s_rt , _s_rt , & m_rt -> slave_rt_list , m_rt_node ) {
11651165 sdw_slave_port_free (s_rt -> slave , stream );
1166- sdw_release_slave_stream (s_rt -> slave , stream );
1166+ sdw_slave_rt_free (s_rt -> slave , stream );
11671167 }
11681168
11691169 list_del (& m_rt -> stream_node );
@@ -1860,7 +1860,7 @@ int sdw_stream_add_master(struct sdw_bus *bus,
18601860 goto unlock ;
18611861
18621862stream_error :
1863- sdw_release_master_stream (m_rt , stream );
1863+ sdw_master_rt_free (m_rt , stream );
18641864unlock :
18651865 mutex_unlock (& bus -> bus_lock );
18661866 return ret ;
@@ -1888,7 +1888,7 @@ int sdw_stream_remove_master(struct sdw_bus *bus,
18881888 continue ;
18891889
18901890 sdw_master_port_free (m_rt );
1891- sdw_release_master_stream (m_rt , stream );
1891+ sdw_master_rt_free (m_rt , stream );
18921892 stream -> m_rt_count -- ;
18931893 }
18941894
@@ -1987,7 +1987,7 @@ int sdw_stream_add_slave(struct sdw_slave *slave,
19871987 * we hit error so cleanup the stream, release all Slave(s) and
19881988 * Master runtime
19891989 */
1990- sdw_release_master_stream (m_rt , stream );
1990+ sdw_master_rt_free (m_rt , stream );
19911991error :
19921992 mutex_unlock (& slave -> bus -> bus_lock );
19931993 return ret ;
@@ -2008,7 +2008,7 @@ int sdw_stream_remove_slave(struct sdw_slave *slave,
20082008 mutex_lock (& slave -> bus -> bus_lock );
20092009
20102010 sdw_slave_port_free (slave , stream );
2011- sdw_release_slave_stream (slave , stream );
2011+ sdw_slave_rt_free (slave , stream );
20122012
20132013 mutex_unlock (& slave -> bus -> bus_lock );
20142014
0 commit comments