@@ -16,12 +16,6 @@ int intel_start_bus(struct sdw_intel *sdw)
1616 struct sdw_bus * bus = & cdns -> bus ;
1717 int ret ;
1818
19- ret = sdw_cdns_enable_interrupt (cdns , true);
20- if (ret < 0 ) {
21- dev_err (dev , "%s: cannot enable interrupts: %d\n" , __func__ , ret );
22- return ret ;
23- }
24-
2519 /*
2620 * follow recommended programming flows to avoid timeouts when
2721 * gsync is enabled
@@ -32,30 +26,33 @@ int intel_start_bus(struct sdw_intel *sdw)
3226 ret = sdw_cdns_init (cdns );
3327 if (ret < 0 ) {
3428 dev_err (dev , "%s: unable to initialize Cadence IP: %d\n" , __func__ , ret );
35- goto err_interrupt ;
29+ return ret ;
3630 }
3731
3832 ret = sdw_cdns_exit_reset (cdns );
3933 if (ret < 0 ) {
4034 dev_err (dev , "%s: unable to exit bus reset sequence: %d\n" , __func__ , ret );
41- goto err_interrupt ;
35+ return ret ;
4236 }
4337
4438 if (bus -> multi_link ) {
4539 ret = sdw_intel_sync_go (sdw );
4640 if (ret < 0 ) {
4741 dev_err (dev , "%s: sync go failed: %d\n" , __func__ , ret );
48- goto err_interrupt ;
42+ return ret ;
4943 }
5044 }
45+
46+ ret = sdw_cdns_enable_interrupt (cdns , true);
47+ if (ret < 0 ) {
48+ dev_err (dev , "%s: cannot enable interrupts: %d\n" , __func__ , ret );
49+ return ret ;
50+ }
51+
5152 sdw_cdns_check_self_clearing_bits (cdns , __func__ ,
5253 true, INTEL_MASTER_RESET_ITERATIONS );
5354
5455 return 0 ;
55-
56- err_interrupt :
57- sdw_cdns_enable_interrupt (cdns , false);
58- return ret ;
5956}
6057
6158int intel_start_bus_after_reset (struct sdw_intel * sdw )
@@ -86,12 +83,6 @@ int intel_start_bus_after_reset(struct sdw_intel *sdw)
8683 status = SDW_UNATTACH_REQUEST_MASTER_RESET ;
8784 sdw_clear_slave_status (bus , status );
8885
89- ret = sdw_cdns_enable_interrupt (cdns , true);
90- if (ret < 0 ) {
91- dev_err (dev , "cannot enable interrupts during resume\n" );
92- return ret ;
93- }
94-
9586 /*
9687 * follow recommended programming flows to avoid
9788 * timeouts when gsync is enabled
@@ -115,31 +106,36 @@ int intel_start_bus_after_reset(struct sdw_intel *sdw)
115106 ret = sdw_cdns_clock_restart (cdns , !clock_stop0 );
116107 if (ret < 0 ) {
117108 dev_err (dev , "unable to restart clock during resume\n" );
118- goto err_interrupt ;
109+ if (!clock_stop0 )
110+ sdw_cdns_enable_interrupt (cdns , false);
111+ return ret ;
119112 }
120113
121114 if (!clock_stop0 ) {
122115 ret = sdw_cdns_exit_reset (cdns );
123116 if (ret < 0 ) {
124117 dev_err (dev , "unable to exit bus reset sequence during resume\n" );
125- goto err_interrupt ;
118+ return ret ;
126119 }
127120
128121 if (bus -> multi_link ) {
129122 ret = sdw_intel_sync_go (sdw );
130123 if (ret < 0 ) {
131124 dev_err (sdw -> cdns .dev , "sync go failed during resume\n" );
132- goto err_interrupt ;
125+ return ret ;
133126 }
134127 }
128+
129+ ret = sdw_cdns_enable_interrupt (cdns , true);
130+ if (ret < 0 ) {
131+ dev_err (dev , "cannot enable interrupts during resume\n" );
132+ return ret ;
133+ }
134+
135135 }
136136 sdw_cdns_check_self_clearing_bits (cdns , __func__ , true, INTEL_MASTER_RESET_ITERATIONS );
137137
138138 return 0 ;
139-
140- err_interrupt :
141- sdw_cdns_enable_interrupt (cdns , false);
142- return ret ;
143139}
144140
145141void intel_check_clock_stop (struct sdw_intel * sdw )
@@ -158,16 +154,15 @@ int intel_start_bus_after_clock_stop(struct sdw_intel *sdw)
158154 struct sdw_cdns * cdns = & sdw -> cdns ;
159155 int ret ;
160156
161- ret = sdw_cdns_enable_interrupt (cdns , true );
157+ ret = sdw_cdns_clock_restart (cdns , false );
162158 if (ret < 0 ) {
163- dev_err (dev , "%s: cannot enable interrupts : %d\n" , __func__ , ret );
159+ dev_err (dev , "%s: unable to restart clock : %d\n" , __func__ , ret );
164160 return ret ;
165161 }
166162
167- ret = sdw_cdns_clock_restart (cdns , false );
163+ ret = sdw_cdns_enable_interrupt (cdns , true );
168164 if (ret < 0 ) {
169- dev_err (dev , "%s: unable to restart clock: %d\n" , __func__ , ret );
170- sdw_cdns_enable_interrupt (cdns , false);
165+ dev_err (dev , "%s: cannot enable interrupts: %d\n" , __func__ , ret );
171166 return ret ;
172167 }
173168
0 commit comments