q6sstop-qcs404.c (c95baf12f5077419db01313ab61c2aac007d40cd) | q6sstop-qcs404.c (72cfc73f4663abe0b5c420d255c932ae5e7c126d) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (c) 2018, The Linux Foundation. All rights reserved. 4 */ 5 6#include <linux/bitops.h> 7#include <linux/err.h> 8#include <linux/module.h> --- 145 unchanged lines hidden (view full) --- 154}; 155MODULE_DEVICE_TABLE(of, q6sstopcc_qcs404_match_table); 156 157static int q6sstopcc_qcs404_probe(struct platform_device *pdev) 158{ 159 const struct qcom_cc_desc *desc; 160 int ret; 161 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (c) 2018, The Linux Foundation. All rights reserved. 4 */ 5 6#include <linux/bitops.h> 7#include <linux/err.h> 8#include <linux/module.h> --- 145 unchanged lines hidden (view full) --- 154}; 155MODULE_DEVICE_TABLE(of, q6sstopcc_qcs404_match_table); 156 157static int q6sstopcc_qcs404_probe(struct platform_device *pdev) 158{ 159 const struct qcom_cc_desc *desc; 160 int ret; 161 |
162 pm_runtime_enable(&pdev->dev); 163 ret = pm_clk_create(&pdev->dev); | 162 ret = devm_pm_runtime_enable(&pdev->dev); |
164 if (ret) | 163 if (ret) |
165 goto disable_pm_runtime; | 164 return ret; |
166 | 165 |
166 ret = devm_pm_clk_create(&pdev->dev); 167 if (ret) 168 return ret; 169 |
|
167 ret = pm_clk_add(&pdev->dev, NULL); 168 if (ret < 0) { 169 dev_err(&pdev->dev, "failed to acquire iface clock\n"); | 170 ret = pm_clk_add(&pdev->dev, NULL); 171 if (ret < 0) { 172 dev_err(&pdev->dev, "failed to acquire iface clock\n"); |
170 goto destroy_pm_clk; | 173 return ret; |
171 } 172 173 q6sstop_regmap_config.name = "q6sstop_tcsr"; 174 desc = &tcsr_qcs404_desc; 175 176 ret = qcom_cc_probe_by_index(pdev, 1, desc); 177 if (ret) | 174 } 175 176 q6sstop_regmap_config.name = "q6sstop_tcsr"; 177 desc = &tcsr_qcs404_desc; 178 179 ret = qcom_cc_probe_by_index(pdev, 1, desc); 180 if (ret) |
178 goto destroy_pm_clk; | 181 return ret; |
179 180 q6sstop_regmap_config.name = "q6sstop_cc"; 181 desc = &q6sstop_qcs404_desc; 182 183 ret = qcom_cc_probe_by_index(pdev, 0, desc); 184 if (ret) | 182 183 q6sstop_regmap_config.name = "q6sstop_cc"; 184 desc = &q6sstop_qcs404_desc; 185 186 ret = qcom_cc_probe_by_index(pdev, 0, desc); 187 if (ret) |
185 goto destroy_pm_clk; | 188 return ret; |
186 187 return 0; | 189 190 return 0; |
188 189destroy_pm_clk: 190 pm_clk_destroy(&pdev->dev); 191 192disable_pm_runtime: 193 pm_runtime_disable(&pdev->dev); 194 195 return ret; | |
196} 197 | 191} 192 |
198static int q6sstopcc_qcs404_remove(struct platform_device *pdev) 199{ 200 pm_clk_destroy(&pdev->dev); 201 pm_runtime_disable(&pdev->dev); 202 203 return 0; 204} 205 | |
206static const struct dev_pm_ops q6sstopcc_pm_ops = { 207 SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) 208}; 209 210static struct platform_driver q6sstopcc_qcs404_driver = { 211 .probe = q6sstopcc_qcs404_probe, | 193static const struct dev_pm_ops q6sstopcc_pm_ops = { 194 SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) 195}; 196 197static struct platform_driver q6sstopcc_qcs404_driver = { 198 .probe = q6sstopcc_qcs404_probe, |
212 .remove = q6sstopcc_qcs404_remove, | |
213 .driver = { 214 .name = "qcs404-q6sstopcc", 215 .of_match_table = q6sstopcc_qcs404_match_table, 216 .pm = &q6sstopcc_pm_ops, 217 }, 218}; 219 220module_platform_driver(q6sstopcc_qcs404_driver); 221 222MODULE_DESCRIPTION("QTI QCS404 Q6SSTOP Clock Controller Driver"); 223MODULE_LICENSE("GPL v2"); | 199 .driver = { 200 .name = "qcs404-q6sstopcc", 201 .of_match_table = q6sstopcc_qcs404_match_table, 202 .pm = &q6sstopcc_pm_ops, 203 }, 204}; 205 206module_platform_driver(q6sstopcc_qcs404_driver); 207 208MODULE_DESCRIPTION("QTI QCS404 Q6SSTOP Clock Controller Driver"); 209MODULE_LICENSE("GPL v2"); |