Skip to content

Commit 0d00cd1

Browse files
lumagGeorgi Djakov
authored andcommitted
interconnect: qcom: sm8550: switch to qcom_icc_rpmh_* function
Change sm8550 interconnect driver to use generic qcom_icc_rpmh_* functions rather than embedding a copy of thema. This also fixes an overallocation of memory for icc_onecell_data structure. Fixes: e6f0d6a ("interconnect: qcom: Add SM8550 interconnect provider driver") Signed-off-by: Dmitry Baryshkov <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Georgi Djakov <[email protected]>
1 parent 87e8fab commit 0d00cd1

File tree

1 file changed

+2
-97
lines changed

1 file changed

+2
-97
lines changed

drivers/interconnect/qcom/sm8550.c

Lines changed: 2 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,101 +2165,6 @@ static const struct qcom_icc_desc sm8550_system_noc = {
21652165
.num_bcms = ARRAY_SIZE(system_noc_bcms),
21662166
};
21672167

2168-
static int qnoc_probe(struct platform_device *pdev)
2169-
{
2170-
const struct qcom_icc_desc *desc;
2171-
struct icc_onecell_data *data;
2172-
struct icc_provider *provider;
2173-
struct qcom_icc_node * const *qnodes;
2174-
struct qcom_icc_provider *qp;
2175-
struct icc_node *node;
2176-
size_t num_nodes, i;
2177-
int ret;
2178-
2179-
desc = device_get_match_data(&pdev->dev);
2180-
if (!desc)
2181-
return -EINVAL;
2182-
2183-
qnodes = desc->nodes;
2184-
num_nodes = desc->num_nodes;
2185-
2186-
qp = devm_kzalloc(&pdev->dev, sizeof(*qp), GFP_KERNEL);
2187-
if (!qp)
2188-
return -ENOMEM;
2189-
2190-
data = devm_kcalloc(&pdev->dev, num_nodes, sizeof(*node), GFP_KERNEL);
2191-
if (!data)
2192-
return -ENOMEM;
2193-
2194-
provider = &qp->provider;
2195-
provider->dev = &pdev->dev;
2196-
provider->set = qcom_icc_set;
2197-
provider->pre_aggregate = qcom_icc_pre_aggregate;
2198-
provider->aggregate = qcom_icc_aggregate;
2199-
provider->xlate_extended = qcom_icc_xlate_extended;
2200-
INIT_LIST_HEAD(&provider->nodes);
2201-
provider->data = data;
2202-
2203-
qp->dev = &pdev->dev;
2204-
qp->bcms = desc->bcms;
2205-
qp->num_bcms = desc->num_bcms;
2206-
2207-
qp->voter = of_bcm_voter_get(qp->dev, NULL);
2208-
if (IS_ERR(qp->voter))
2209-
return PTR_ERR(qp->voter);
2210-
2211-
ret = icc_provider_add(provider);
2212-
if (ret) {
2213-
dev_err_probe(&pdev->dev, ret,
2214-
"error adding interconnect provider\n");
2215-
return ret;
2216-
}
2217-
2218-
for (i = 0; i < qp->num_bcms; i++)
2219-
qcom_icc_bcm_init(qp->bcms[i], &pdev->dev);
2220-
2221-
for (i = 0; i < num_nodes; i++) {
2222-
size_t j;
2223-
2224-
if (!qnodes[i])
2225-
continue;
2226-
2227-
node = icc_node_create(qnodes[i]->id);
2228-
if (IS_ERR(node)) {
2229-
ret = PTR_ERR(node);
2230-
goto err;
2231-
}
2232-
2233-
node->name = qnodes[i]->name;
2234-
node->data = qnodes[i];
2235-
icc_node_add(node, provider);
2236-
2237-
for (j = 0; j < qnodes[i]->num_links; j++)
2238-
icc_link_create(node, qnodes[i]->links[j]);
2239-
2240-
data->nodes[i] = node;
2241-
}
2242-
data->num_nodes = num_nodes;
2243-
2244-
platform_set_drvdata(pdev, qp);
2245-
2246-
return 0;
2247-
err:
2248-
icc_nodes_remove(provider);
2249-
icc_provider_del(provider);
2250-
return ret;
2251-
}
2252-
2253-
static int qnoc_remove(struct platform_device *pdev)
2254-
{
2255-
struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
2256-
2257-
icc_nodes_remove(&qp->provider);
2258-
icc_provider_del(&qp->provider);
2259-
2260-
return 0;
2261-
}
2262-
22632168
static const struct of_device_id qnoc_of_match[] = {
22642169
{ .compatible = "qcom,sm8550-aggre1-noc",
22652170
.data = &sm8550_aggre1_noc},
@@ -2294,8 +2199,8 @@ static const struct of_device_id qnoc_of_match[] = {
22942199
MODULE_DEVICE_TABLE(of, qnoc_of_match);
22952200

22962201
static struct platform_driver qnoc_driver = {
2297-
.probe = qnoc_probe,
2298-
.remove = qnoc_remove,
2202+
.probe = qcom_icc_rpmh_probe,
2203+
.remove = qcom_icc_rpmh_remove,
22992204
.driver = {
23002205
.name = "qnoc-sm8550",
23012206
.of_match_table = qnoc_of_match,

0 commit comments

Comments
 (0)