]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
soc/tegra: pmc: Simplify IO rail bit handling
authorJon Hunter <jonathanh@nvidia.com>
Sat, 22 Oct 2016 19:23:53 +0000 (20:23 +0100)
committerThierry Reding <treding@nvidia.com>
Tue, 15 Nov 2016 14:51:53 +0000 (15:51 +0100)
The function tegra_io_rail_prepare() converts the IO rail ID into a
bit position that is used to check the status and control the IO rail
in the PMC registers. However, rather than converting to a bit position
it is more useful to convert to a bit-mask because this is what is
actually used. By doing so the BIT() marco only needs to be used once
and we can use the IO_DPD_REQ_CODE_MASK when checking for erroneous rail
IDs.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
[treding@nvidia.com: rebase and rename bit -> mask]
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/pmc.c

index c8b54b9dc093125d5a3d1785c934703ce7f26699..c21d48db058e9ffcdfd8a073ef7af5256b2b29e7 100644 (file)
@@ -934,7 +934,7 @@ tegra_io_pad_find(struct tegra_pmc *pmc, enum tegra_io_pad id)
 }
 
 static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
-                               unsigned long *status, unsigned int *bit)
+                               unsigned long *status, u32 *mask)
 {
        const struct tegra_io_pad_soc *pad;
        unsigned long rate, value;
@@ -946,7 +946,7 @@ static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
        if (pad->dpd == UINT_MAX)
                return -ENOTSUPP;
 
-       *bit = pad->dpd % 32;
+       *mask = BIT(pad->dpd % 32);
 
        if (pad->dpd < 32) {
                *status = IO_DPD_STATUS;
@@ -1002,20 +1002,20 @@ static void tegra_io_pad_unprepare(void)
 int tegra_io_pad_power_enable(enum tegra_io_pad id)
 {
        unsigned long request, status;
-       unsigned int bit;
+       u32 mask;
        int err;
 
        mutex_lock(&pmc->powergates_lock);
 
-       err = tegra_io_pad_prepare(id, &request, &status, &bit);
+       err = tegra_io_pad_prepare(id, &request, &status, &mask);
        if (err < 0) {
                dev_err(pmc->dev, "tegra_io_pad_prepare() failed: %d\n", err);
                goto unlock;
        }
 
-       tegra_pmc_writel(IO_DPD_REQ_CODE_OFF | BIT(bit), request);
+       tegra_pmc_writel(IO_DPD_REQ_CODE_OFF | mask, request);
 
-       err = tegra_io_pad_poll(status, BIT(bit), 0, 250);
+       err = tegra_io_pad_poll(status, mask, 0, 250);
        if (err < 0) {
                dev_err(pmc->dev, "tegra_io_pad_poll() failed: %d\n", err);
                goto unlock;
@@ -1038,20 +1038,20 @@ EXPORT_SYMBOL(tegra_io_pad_power_enable);
 int tegra_io_pad_power_disable(enum tegra_io_pad id)
 {
        unsigned long request, status;
-       unsigned int bit;
+       u32 mask;
        int err;
 
        mutex_lock(&pmc->powergates_lock);
 
-       err = tegra_io_pad_prepare(id, &request, &status, &bit);
+       err = tegra_io_pad_prepare(id, &request, &status, &mask);
        if (err < 0) {
                dev_err(pmc->dev, "tegra_io_pad_prepare() failed: %d\n", err);
                goto unlock;
        }
 
-       tegra_pmc_writel(IO_DPD_REQ_CODE_ON | BIT(bit), request);
+       tegra_pmc_writel(IO_DPD_REQ_CODE_ON | mask, request);
 
-       err = tegra_io_pad_poll(status, BIT(bit), BIT(bit), 250);
+       err = tegra_io_pad_poll(status, mask, mask, 250);
        if (err < 0) {
                dev_err(pmc->dev, "tegra_io_pad_poll() failed: %d\n", err);
                goto unlock;