Make all scp_domain_data instances static const by removing the mutable
scpd member from struct scp_domain_data.

Refactor mtk_scpsys_domain_is_on() to take struct power_domain as
parameter instead of struct mtk_scp_domain_data and remove
mtk_scpsys_power_request(), which only existed to associate a struct
scp_domain with struct scp_domain_data.

Signed-off-by: Julien Stephan <[email protected]>
---
 drivers/power/domain/mtk-power-domain.c | 34 +++++++++++----------------------
 1 file changed, 11 insertions(+), 23 deletions(-)

diff --git a/drivers/power/domain/mtk-power-domain.c 
b/drivers/power/domain/mtk-power-domain.c
index f3d79331474..aeb27d9bced 100644
--- a/drivers/power/domain/mtk-power-domain.c
+++ b/drivers/power/domain/mtk-power-domain.c
@@ -64,7 +64,6 @@
 struct mtk_scp_domain;
 
 struct mtk_scp_domain_data {
-       struct mtk_scp_domain *scpd;
        u32 sta_mask;
        int ctl_offs;
        u32 sram_pdn_bits;
@@ -75,10 +74,10 @@ struct mtk_scp_domain_data {
 struct mtk_scp_domain {
        void __iomem *base;
        void __iomem *infracfg;
-       struct mtk_scp_domain_data *data;
+       const struct mtk_scp_domain_data *data;
 };
 
-static struct mtk_scp_domain_data scp_domain_mt7623[] = {
+static const struct mtk_scp_domain_data scp_domain_mt7623[] = {
        [MT7623_POWER_DOMAIN_CONN] = {
                .sta_mask = PWR_STATUS_CONN,
                .ctl_offs = SPM_CONN_PWR_CON,
@@ -131,7 +130,7 @@ static struct mtk_scp_domain_data scp_domain_mt7623[] = {
        },
 };
 
-static struct mtk_scp_domain_data scp_domain_mt7629[] = {
+static const struct mtk_scp_domain_data scp_domain_mt7629[] = {
        [MT7629_POWER_DOMAIN_ETHSYS] = {
                .sta_mask = PWR_STATUS_ETHSYS,
                .ctl_offs = SPM_ETHSYS_PWR_CON,
@@ -182,9 +181,10 @@ static int mtk_infracfg_clear_bus_protection(void __iomem 
*infracfg,
                                  !(val & mask), 100);
 }
 
-static int mtk_scpsys_domain_is_on(struct mtk_scp_domain_data *data)
+static int mtk_scpsys_domain_is_on(struct power_domain *power_domain)
 {
-       struct mtk_scp_domain *scpd = data->scpd;
+       struct mtk_scp_domain *scpd = dev_get_priv(power_domain->dev);
+       const struct mtk_scp_domain_data *data = &scpd->data[power_domain->id];
        u32 sta = readl(scpd->base + SPM_PWR_STATUS) &
                        data->sta_mask;
        u32 sta2 = readl(scpd->base + SPM_PWR_STATUS_2ND) &
@@ -205,7 +205,7 @@ static int mtk_scpsys_domain_is_on(struct 
mtk_scp_domain_data *data)
 static int mtk_scpsys_power_on(struct power_domain *power_domain)
 {
        struct mtk_scp_domain *scpd = dev_get_priv(power_domain->dev);
-       struct mtk_scp_domain_data *data = &scpd->data[power_domain->id];
+       const struct mtk_scp_domain_data *data = &scpd->data[power_domain->id];
        void __iomem *ctl_addr = scpd->base + data->ctl_offs;
        u32 pdn_ack = data->sram_pdn_ack_bits;
        u32 val;
@@ -220,7 +220,7 @@ static int mtk_scpsys_power_on(struct power_domain 
*power_domain)
        val |= PWR_ON_2ND_BIT;
        writel(val, ctl_addr);
 
-       ret = readx_poll_timeout(mtk_scpsys_domain_is_on, data, tmp, tmp > 0,
+       ret = readx_poll_timeout(mtk_scpsys_domain_is_on, power_domain, tmp, 
tmp > 0,
                                 100);
        if (ret < 0)
                return ret;
@@ -254,7 +254,7 @@ static int mtk_scpsys_power_on(struct power_domain 
*power_domain)
 static int mtk_scpsys_power_off(struct power_domain *power_domain)
 {
        struct mtk_scp_domain *scpd = dev_get_priv(power_domain->dev);
-       struct mtk_scp_domain_data *data = &scpd->data[power_domain->id];
+       const struct mtk_scp_domain_data *data = &scpd->data[power_domain->id];
        void __iomem *ctl_addr = scpd->base + data->ctl_offs;
        u32 pdn_ack = data->sram_pdn_ack_bits;
        u32 val;
@@ -291,24 +291,13 @@ static int mtk_scpsys_power_off(struct power_domain 
*power_domain)
        val &= ~PWR_ON_2ND_BIT;
        writel(val, ctl_addr);
 
-       ret = readx_poll_timeout(mtk_scpsys_domain_is_on, data, tmp, !tmp, 100);
+       ret = readx_poll_timeout(mtk_scpsys_domain_is_on, power_domain, tmp, 
!tmp, 100);
        if (ret < 0)
                return ret;
 
        return 0;
 }
 
-static int mtk_scpsys_power_request(struct power_domain *power_domain)
-{
-       struct mtk_scp_domain *scpd = dev_get_priv(power_domain->dev);
-       struct mtk_scp_domain_data *data;
-
-       data = &scpd->data[power_domain->id];
-       data->scpd = scpd;
-
-       return 0;
-}
-
 static int mtk_power_domain_probe(struct udevice *dev)
 {
        struct ofnode_phandle_args args;
@@ -321,7 +310,7 @@ static int mtk_power_domain_probe(struct udevice *dev)
        if (!scpd->base)
                return -ENOENT;
 
-       scpd->data = (struct mtk_scp_domain_data *)dev_get_driver_data(dev);
+       scpd->data = (const struct mtk_scp_domain_data 
*)dev_get_driver_data(dev);
 
        /* get corresponding syscon phandle */
        err = dev_read_phandle_with_args(dev, "infracfg", NULL, 0, 0, &args);
@@ -365,7 +354,6 @@ static const struct udevice_id mtk_power_domain_ids[] = {
 static const struct power_domain_ops mtk_power_domain_ops = {
        .off = mtk_scpsys_power_off,
        .on = mtk_scpsys_power_on,
-       .request = mtk_scpsys_power_request,
 };
 
 U_BOOT_DRIVER(mtk_power_domain) = {

-- 
2.54.0

Reply via email to