Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00ead3c9 authored by Aapo Vienamo's avatar Aapo Vienamo Committed by Thierry Reding
Browse files

soc/tegra: pmc: Factor out DPD register bit calculation



Factor out the the code to calculate the correct DPD register and bit
number for a given pad. This logic will be needed to query the status
register.

Signed-off-by: default avatarAapo Vienamo <avienamo@nvidia.com>
Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 13136a47
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -922,11 +922,12 @@ tegra_io_pad_find(struct tegra_pmc *pmc, enum tegra_io_pad id)
	return NULL;
}

static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
				unsigned long *status, u32 *mask)
static int tegra_io_pad_get_dpd_register_bit(enum tegra_io_pad id,
					     unsigned long *request,
					     unsigned long *status,
					     u32 *mask)
{
	const struct tegra_io_pad_soc *pad;
	unsigned long rate, value;

	pad = tegra_io_pad_find(pmc, id);
	if (!pad) {
@@ -947,6 +948,19 @@ static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
		*request = pmc->soc->regs->dpd2_req;
	}

	return 0;
}

static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
				unsigned long *status, u32 *mask)
{
	unsigned long rate, value;
	int err;

	err = tegra_io_pad_get_dpd_register_bit(id, request, status, mask);
	if (err)
		return err;

	if (pmc->clk) {
		rate = clk_get_rate(pmc->clk);
		if (!rate) {