Skip to content

Commit 23e114b

Browse files
mripardbebarino
authored andcommitted
clk: bcm: rpi: Make the PLLB registration function return a clk_hw
The raspberrypi_register_pllb has been returning an integer so far to notify whether the functions has exited successfully or not. However, the OF provider functions in the clock framework require access to the clk_hw structure so that we can expose those clocks to device tree consumers. Since we'll want that for the future clocks, let's return a clk_hw pointer instead of the return code. Cc: Michael Turquette <[email protected]> Cc: [email protected] Acked-by: Nicolas Saenz Julienne <[email protected]> Reviewed-by: Stephen Boyd <[email protected]> Tested-by: Nicolas Saenz Julienne <[email protected]> Signed-off-by: Maxime Ripard <[email protected]> Link: https://lore.kernel.org/r/97218559db643e62fdd2b5e3046a2a05b8c2e769.1592210452.git-series.maxime@cerno.tech Signed-off-by: Stephen Boyd <[email protected]>
1 parent 3ea59ac commit 23e114b

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

drivers/clk/bcm/clk-raspberrypi.c

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ static const struct clk_ops raspberrypi_firmware_pll_clk_ops = {
186186
.determine_rate = raspberrypi_pll_determine_rate,
187187
};
188188

189-
static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
189+
static struct clk_hw *raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
190190
{
191191
struct raspberrypi_clk_data *data;
192192
struct clk_init_data init = {};
@@ -195,7 +195,7 @@ static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
195195

196196
data = devm_kzalloc(rpi->dev, sizeof(*data), GFP_KERNEL);
197197
if (!data)
198-
return -ENOMEM;
198+
return ERR_PTR(-ENOMEM);
199199
data->rpi = rpi;
200200
data->id = RPI_FIRMWARE_ARM_CLK_ID;
201201

@@ -213,7 +213,7 @@ static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
213213
if (ret) {
214214
dev_err(rpi->dev, "Failed to get %s min freq: %d\n",
215215
init.name, ret);
216-
return ret;
216+
return ERR_PTR(ret);
217217
}
218218

219219
ret = raspberrypi_clock_property(rpi->firmware, data,
@@ -222,13 +222,13 @@ static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
222222
if (ret) {
223223
dev_err(rpi->dev, "Failed to get %s max freq: %d\n",
224224
init.name, ret);
225-
return ret;
225+
return ERR_PTR(ret);
226226
}
227227

228228
if (!min_rate || !max_rate) {
229229
dev_err(rpi->dev, "Unexpected frequency range: min %u, max %u\n",
230230
min_rate, max_rate);
231-
return -EINVAL;
231+
return ERR_PTR(-EINVAL);
232232
}
233233

234234
dev_info(rpi->dev, "CPU frequency range: min %u, max %u\n",
@@ -237,12 +237,14 @@ static int raspberrypi_register_pllb(struct raspberrypi_clk *rpi)
237237
data->hw.init = &init;
238238

239239
ret = devm_clk_hw_register(rpi->dev, &data->hw);
240-
if (!ret)
241-
clk_hw_set_rate_range(&data->hw,
242-
min_rate * RPI_FIRMWARE_PLLB_ARM_DIV_RATE,
243-
max_rate * RPI_FIRMWARE_PLLB_ARM_DIV_RATE);
240+
if (ret)
241+
return ERR_PTR(ret);
244242

245-
return ret;
243+
clk_hw_set_rate_range(&data->hw,
244+
min_rate * RPI_FIRMWARE_PLLB_ARM_DIV_RATE,
245+
max_rate * RPI_FIRMWARE_PLLB_ARM_DIV_RATE);
246+
247+
return &data->hw;
246248
}
247249

248250
static struct clk_fixed_factor raspberrypi_clk_pllb_arm = {
@@ -257,25 +259,25 @@ static struct clk_fixed_factor raspberrypi_clk_pllb_arm = {
257259
},
258260
};
259261

260-
static int raspberrypi_register_pllb_arm(struct raspberrypi_clk *rpi)
262+
static struct clk_hw *raspberrypi_register_pllb_arm(struct raspberrypi_clk *rpi)
261263
{
262264
int ret;
263265

264266
ret = devm_clk_hw_register(rpi->dev, &raspberrypi_clk_pllb_arm.hw);
265267
if (ret) {
266268
dev_err(rpi->dev, "Failed to initialize pllb_arm\n");
267-
return ret;
269+
return ERR_PTR(ret);
268270
}
269271

270272
ret = devm_clk_hw_register_clkdev(rpi->dev,
271273
&raspberrypi_clk_pllb_arm.hw,
272274
NULL, "cpu0");
273275
if (ret) {
274276
dev_err(rpi->dev, "Failed to initialize clkdev\n");
275-
return ret;
277+
return ERR_PTR(ret);
276278
}
277279

278-
return 0;
280+
return &raspberrypi_clk_pllb_arm.hw;
279281
}
280282

281283
static int raspberrypi_clk_probe(struct platform_device *pdev)
@@ -284,7 +286,7 @@ static int raspberrypi_clk_probe(struct platform_device *pdev)
284286
struct device *dev = &pdev->dev;
285287
struct rpi_firmware *firmware;
286288
struct raspberrypi_clk *rpi;
287-
int ret;
289+
struct clk_hw *hw;
288290

289291
/*
290292
* We can be probed either through the an old-fashioned
@@ -314,15 +316,15 @@ static int raspberrypi_clk_probe(struct platform_device *pdev)
314316
rpi->firmware = firmware;
315317
platform_set_drvdata(pdev, rpi);
316318

317-
ret = raspberrypi_register_pllb(rpi);
318-
if (ret) {
319-
dev_err(dev, "Failed to initialize pllb, %d\n", ret);
320-
return ret;
319+
hw = raspberrypi_register_pllb(rpi);
320+
if (IS_ERR(hw)) {
321+
dev_err(dev, "Failed to initialize pllb, %ld\n", PTR_ERR(hw));
322+
return PTR_ERR(hw);
321323
}
322324

323-
ret = raspberrypi_register_pllb_arm(rpi);
324-
if (ret)
325-
return ret;
325+
hw = raspberrypi_register_pllb_arm(rpi);
326+
if (IS_ERR(hw))
327+
return PTR_ERR(hw);
326328

327329
rpi->cpufreq = platform_device_register_data(dev, "raspberrypi-cpufreq",
328330
-1, NULL, 0);

0 commit comments

Comments
 (0)