Skip to content

Commit 87e8fab

Browse files
lumagGeorgi Djakov
authored andcommitted
interconnect: qcom: sm8450: switch to qcom_icc_rpmh_* function
Change sm8450 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: fafc114 ("interconnect: qcom: Add SM8450 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 f77ebdd commit 87e8fab

File tree

1 file changed

+2
-96
lines changed

1 file changed

+2
-96
lines changed

drivers/interconnect/qcom/sm8450.c

Lines changed: 2 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,100 +1844,6 @@ static const struct qcom_icc_desc sm8450_system_noc = {
18441844
.num_bcms = ARRAY_SIZE(system_noc_bcms),
18451845
};
18461846

1847-
static int qnoc_probe(struct platform_device *pdev)
1848-
{
1849-
const struct qcom_icc_desc *desc;
1850-
struct icc_onecell_data *data;
1851-
struct icc_provider *provider;
1852-
struct qcom_icc_node * const *qnodes;
1853-
struct qcom_icc_provider *qp;
1854-
struct icc_node *node;
1855-
size_t num_nodes, i;
1856-
int ret;
1857-
1858-
desc = device_get_match_data(&pdev->dev);
1859-
if (!desc)
1860-
return -EINVAL;
1861-
1862-
qnodes = desc->nodes;
1863-
num_nodes = desc->num_nodes;
1864-
1865-
qp = devm_kzalloc(&pdev->dev, sizeof(*qp), GFP_KERNEL);
1866-
if (!qp)
1867-
return -ENOMEM;
1868-
1869-
data = devm_kcalloc(&pdev->dev, num_nodes, sizeof(*node), GFP_KERNEL);
1870-
if (!data)
1871-
return -ENOMEM;
1872-
1873-
provider = &qp->provider;
1874-
provider->dev = &pdev->dev;
1875-
provider->set = qcom_icc_set;
1876-
provider->pre_aggregate = qcom_icc_pre_aggregate;
1877-
provider->aggregate = qcom_icc_aggregate;
1878-
provider->xlate_extended = qcom_icc_xlate_extended;
1879-
INIT_LIST_HEAD(&provider->nodes);
1880-
provider->data = data;
1881-
1882-
qp->dev = &pdev->dev;
1883-
qp->bcms = desc->bcms;
1884-
qp->num_bcms = desc->num_bcms;
1885-
1886-
qp->voter = of_bcm_voter_get(qp->dev, NULL);
1887-
if (IS_ERR(qp->voter))
1888-
return PTR_ERR(qp->voter);
1889-
1890-
ret = icc_provider_add(provider);
1891-
if (ret) {
1892-
dev_err(&pdev->dev, "error adding interconnect provider\n");
1893-
return ret;
1894-
}
1895-
1896-
for (i = 0; i < qp->num_bcms; i++)
1897-
qcom_icc_bcm_init(qp->bcms[i], &pdev->dev);
1898-
1899-
for (i = 0; i < num_nodes; i++) {
1900-
size_t j;
1901-
1902-
if (!qnodes[i])
1903-
continue;
1904-
1905-
node = icc_node_create(qnodes[i]->id);
1906-
if (IS_ERR(node)) {
1907-
ret = PTR_ERR(node);
1908-
goto err;
1909-
}
1910-
1911-
node->name = qnodes[i]->name;
1912-
node->data = qnodes[i];
1913-
icc_node_add(node, provider);
1914-
1915-
for (j = 0; j < qnodes[i]->num_links; j++)
1916-
icc_link_create(node, qnodes[i]->links[j]);
1917-
1918-
data->nodes[i] = node;
1919-
}
1920-
data->num_nodes = num_nodes;
1921-
1922-
platform_set_drvdata(pdev, qp);
1923-
1924-
return 0;
1925-
err:
1926-
icc_nodes_remove(provider);
1927-
icc_provider_del(provider);
1928-
return ret;
1929-
}
1930-
1931-
static int qnoc_remove(struct platform_device *pdev)
1932-
{
1933-
struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
1934-
1935-
icc_nodes_remove(&qp->provider);
1936-
icc_provider_del(&qp->provider);
1937-
1938-
return 0;
1939-
}
1940-
19411847
static const struct of_device_id qnoc_of_match[] = {
19421848
{ .compatible = "qcom,sm8450-aggre1-noc",
19431849
.data = &sm8450_aggre1_noc},
@@ -1966,8 +1872,8 @@ static const struct of_device_id qnoc_of_match[] = {
19661872
MODULE_DEVICE_TABLE(of, qnoc_of_match);
19671873

19681874
static struct platform_driver qnoc_driver = {
1969-
.probe = qnoc_probe,
1970-
.remove = qnoc_remove,
1875+
.probe = qcom_icc_rpmh_probe,
1876+
.remove = qcom_icc_rpmh_remove,
19711877
.driver = {
19721878
.name = "qnoc-sm8450",
19731879
.of_match_table = qnoc_of_match,

0 commit comments

Comments
 (0)