| .. | .. |
|---|
| 42 | 42 | |
|---|
| 43 | 43 | struct st_rng_data { |
|---|
| 44 | 44 | void __iomem *base; |
|---|
| 45 | | - struct clk *clk; |
|---|
| 46 | 45 | struct hwrng ops; |
|---|
| 47 | 46 | }; |
|---|
| 48 | 47 | |
|---|
| .. | .. |
|---|
| 85 | 84 | if (IS_ERR(base)) |
|---|
| 86 | 85 | return PTR_ERR(base); |
|---|
| 87 | 86 | |
|---|
| 88 | | - clk = devm_clk_get(&pdev->dev, NULL); |
|---|
| 87 | + clk = devm_clk_get_enabled(&pdev->dev, NULL); |
|---|
| 89 | 88 | if (IS_ERR(clk)) |
|---|
| 90 | 89 | return PTR_ERR(clk); |
|---|
| 91 | | - |
|---|
| 92 | | - ret = clk_prepare_enable(clk); |
|---|
| 93 | | - if (ret) |
|---|
| 94 | | - return ret; |
|---|
| 95 | 90 | |
|---|
| 96 | 91 | ddata->ops.priv = (unsigned long)ddata; |
|---|
| 97 | 92 | ddata->ops.read = st_rng_read; |
|---|
| 98 | 93 | ddata->ops.name = pdev->name; |
|---|
| 99 | 94 | ddata->base = base; |
|---|
| 100 | | - ddata->clk = clk; |
|---|
| 101 | | - |
|---|
| 102 | | - dev_set_drvdata(&pdev->dev, ddata); |
|---|
| 103 | 95 | |
|---|
| 104 | 96 | ret = devm_hwrng_register(&pdev->dev, &ddata->ops); |
|---|
| 105 | 97 | if (ret) { |
|---|
| 106 | 98 | dev_err(&pdev->dev, "Failed to register HW RNG\n"); |
|---|
| 107 | | - clk_disable_unprepare(clk); |
|---|
| 108 | 99 | return ret; |
|---|
| 109 | 100 | } |
|---|
| 110 | 101 | |
|---|
| 111 | 102 | dev_info(&pdev->dev, "Successfully registered HW RNG\n"); |
|---|
| 112 | | - |
|---|
| 113 | | - return 0; |
|---|
| 114 | | -} |
|---|
| 115 | | - |
|---|
| 116 | | -static int st_rng_remove(struct platform_device *pdev) |
|---|
| 117 | | -{ |
|---|
| 118 | | - struct st_rng_data *ddata = dev_get_drvdata(&pdev->dev); |
|---|
| 119 | | - |
|---|
| 120 | | - clk_disable_unprepare(ddata->clk); |
|---|
| 121 | 103 | |
|---|
| 122 | 104 | return 0; |
|---|
| 123 | 105 | } |
|---|
| .. | .. |
|---|
| 134 | 116 | .of_match_table = of_match_ptr(st_rng_match), |
|---|
| 135 | 117 | }, |
|---|
| 136 | 118 | .probe = st_rng_probe, |
|---|
| 137 | | - .remove = st_rng_remove |
|---|
| 138 | 119 | }; |
|---|
| 139 | 120 | |
|---|
| 140 | 121 | module_platform_driver(st_rng_driver); |
|---|