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

Commit ea623061 authored by Stephen Warren's avatar Stephen Warren Committed by Linus Walleij
Browse files

pinctrl: tegra: some bits move between registers



Some of the pinmux configuration bits that exist in "drive group"
registers in Tegra30..Tegra124 move to the "pinmux" registers on future
chips. Add a flag to support this.

Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
Tested-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 8d4684b3
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -348,14 +348,24 @@ static int tegra_pinconf_reg(struct tegra_pmx *pmx,
		*width = 1;
		break;
	case TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE:
		if (pmx->soc->hsm_in_mux) {
			*bank = g->mux_bank;
			*reg = g->mux_reg;
		} else {
			*bank = g->drv_bank;
			*reg = g->drv_reg;
		}
		*bit = g->hsm_bit;
		*width = 1;
		break;
	case TEGRA_PINCONF_PARAM_SCHMITT:
		if (pmx->soc->schmitt_in_mux) {
			*bank = g->mux_bank;
			*reg = g->mux_reg;
		} else {
			*bank = g->drv_bank;
			*reg = g->drv_reg;
		}
		*bit = g->schmitt_bit;
		*width = 1;
		break;
@@ -390,8 +400,13 @@ static int tegra_pinconf_reg(struct tegra_pmx *pmx,
		*width = g->slwr_width;
		break;
	case TEGRA_PINCONF_PARAM_DRIVE_TYPE:
		if (pmx->soc->drvtype_in_mux) {
			*bank = g->mux_bank;
			*reg = g->mux_reg;
		} else {
			*bank = g->drv_bank;
			*reg = g->drv_reg;
		}
		*bit = g->drvtype_bit;
		*width = 2;
		break;
+3 −0
Original line number Diff line number Diff line
@@ -182,6 +182,9 @@ struct tegra_pinctrl_soc_data {
	unsigned nfunctions;
	const struct tegra_pingroup *groups;
	unsigned ngroups;
	bool hsm_in_mux;
	bool schmitt_in_mux;
	bool drvtype_in_mux;
};

int tegra_pinctrl_probe(struct platform_device *pdev,
+3 −0
Original line number Diff line number Diff line
@@ -1841,6 +1841,9 @@ static const struct tegra_pinctrl_soc_data tegra114_pinctrl = {
	.nfunctions = ARRAY_SIZE(tegra114_functions),
	.groups = tegra114_groups,
	.ngroups = ARRAY_SIZE(tegra114_groups),
	.hsm_in_mux = false,
	.schmitt_in_mux = false,
	.drvtype_in_mux = false,
};

static int tegra114_pinctrl_probe(struct platform_device *pdev)
+3 −0
Original line number Diff line number Diff line
@@ -2053,6 +2053,9 @@ static const struct tegra_pinctrl_soc_data tegra124_pinctrl = {
	.nfunctions = ARRAY_SIZE(tegra124_functions),
	.groups = tegra124_groups,
	.ngroups = ARRAY_SIZE(tegra124_groups),
	.hsm_in_mux = false,
	.schmitt_in_mux = false,
	.drvtype_in_mux = false,
};

static int tegra124_pinctrl_probe(struct platform_device *pdev)
+3 −0
Original line number Diff line number Diff line
@@ -2221,6 +2221,9 @@ static const struct tegra_pinctrl_soc_data tegra20_pinctrl = {
	.nfunctions = ARRAY_SIZE(tegra20_functions),
	.groups = tegra20_groups,
	.ngroups = ARRAY_SIZE(tegra20_groups),
	.hsm_in_mux = false,
	.schmitt_in_mux = false,
	.drvtype_in_mux = false,
};

static int tegra20_pinctrl_probe(struct platform_device *pdev)
Loading