@@ -128,10 +128,8 @@ static int rcar_usb2_clock_sel_resume(struct device *dev)
128
128
static int rcar_usb2_clock_sel_remove (struct platform_device * pdev )
129
129
{
130
130
struct device * dev = & pdev -> dev ;
131
- struct usb2_clock_sel_priv * priv = platform_get_drvdata (pdev );
132
131
133
132
of_clk_del_provider (dev -> of_node );
134
- clk_hw_unregister (& priv -> hw );
135
133
pm_runtime_put (dev );
136
134
pm_runtime_disable (dev );
137
135
@@ -164,9 +162,6 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)
164
162
if (IS_ERR (priv -> rsts ))
165
163
return PTR_ERR (priv -> rsts );
166
164
167
- pm_runtime_enable (dev );
168
- pm_runtime_get_sync (dev );
169
-
170
165
clk = devm_clk_get (dev , "usb_extal" );
171
166
if (!IS_ERR (clk ) && !clk_prepare_enable (clk )) {
172
167
priv -> extal = !!clk_get_rate (clk );
@@ -183,18 +178,29 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)
183
178
return - ENOENT ;
184
179
}
185
180
181
+ pm_runtime_enable (dev );
182
+ pm_runtime_get_sync (dev );
186
183
platform_set_drvdata (pdev , priv );
187
184
dev_set_drvdata (dev , priv );
188
185
189
186
init .name = "rcar_usb2_clock_sel" ;
190
187
init .ops = & usb2_clock_sel_clock_ops ;
191
188
priv -> hw .init = & init ;
192
189
193
- clk = clk_register (NULL , & priv -> hw );
194
- if (IS_ERR (clk ))
195
- return PTR_ERR (clk );
190
+ ret = devm_clk_hw_register (NULL , & priv -> hw );
191
+ if (ret )
192
+ goto pm_put ;
193
+
194
+ ret = of_clk_add_hw_provider (np , of_clk_hw_simple_get , & priv -> hw );
195
+ if (ret )
196
+ goto pm_put ;
197
+
198
+ return 0 ;
196
199
197
- return of_clk_add_hw_provider (np , of_clk_hw_simple_get , & priv -> hw );
200
+ pm_put :
201
+ pm_runtime_put (dev );
202
+ pm_runtime_disable (dev );
203
+ return ret ;
198
204
}
199
205
200
206
static const struct dev_pm_ops rcar_usb2_clock_sel_pm_ops = {
0 commit comments