Commit c19763c3 authored by AngeloGioacchino Del Regno's avatar AngeloGioacchino Del Regno Committed by Linus Walleij
Browse files

pinctrl: mediatek: common-v1: Commonize spec_pupd callback



Reduce code size and duplication by using a common spec_pupd callback,
which is possible to use on all of the pinctrl drivers that are
using the v1 pinctrl-mtk-common code, with the exception of mt8135,
which has a different handling compared to the others.
Since the callback function signature was changed, this had to be
propagated to pinctrl-mt8135's spec_pull_set().

Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: default avatarChen-Yu Tsai <wenst@chromium.org>
Link: https://lore.kernel.org/r/20220222111144.20796-5-angelogioacchino.delregno@collabora.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent c8c206cd
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -270,13 +270,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt2701_spec_pupd[] = {
	MTK_PIN_PUPD_SPEC_SR(261, 0x140, 8, 9, 10),	/* ms1 ins */
};

static int mt2701_spec_pull_set(struct regmap *regmap, unsigned int pin,
		unsigned char align, bool isup, unsigned int r1r0)
{
	return mtk_pctrl_spec_pull_set_samereg(regmap, mt2701_spec_pupd,
		ARRAY_SIZE(mt2701_spec_pupd), pin, align, isup, r1r0);
}

static const struct mtk_pin_ies_smt_set mt2701_ies_set[] = {
	MTK_PIN_IES_SMT_SPEC(0, 6, 0xb20, 0),
	MTK_PIN_IES_SMT_SPEC(7, 9, 0xb20, 1),
@@ -508,7 +501,9 @@ static const struct mtk_pinctrl_devdata mt2701_pinctrl_data = {
	.n_grp_cls = ARRAY_SIZE(mt2701_drv_grp),
	.pin_drv_grp = mt2701_pin_drv,
	.n_pin_drv_grps = ARRAY_SIZE(mt2701_pin_drv),
	.spec_pull_set = mt2701_spec_pull_set,
	.spec_pupd = mt2701_spec_pupd,
	.n_spec_pupd = ARRAY_SIZE(mt2701_spec_pupd),
	.spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
	.spec_ies_smt_set = mt2701_ies_smt_set,
	.spec_pinmux_set = mt2701_spec_pinmux_set,
	.spec_dir_set = mt2701_spec_dir_set,
+3 −11
Original line number Diff line number Diff line
@@ -81,16 +81,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt2712_spec_pupd[] = {
	MTK_PIN_PUPD_SPEC_SR(142, 0xe60, 5, 4, 3)
};

static int mt2712_spec_pull_set(struct regmap *regmap,
				unsigned int pin,
				unsigned char align,
				bool isup,
				unsigned int r1r0)
{
	return mtk_pctrl_spec_pull_set_samereg(regmap, mt2712_spec_pupd,
		ARRAY_SIZE(mt2712_spec_pupd), pin, align, isup, r1r0);
}

static const struct mtk_pin_ies_smt_set mt2712_smt_set[] = {
	MTK_PIN_IES_SMT_SPEC(0, 3, 0x900, 2),
	MTK_PIN_IES_SMT_SPEC(4, 7, 0x900, 0),
@@ -563,7 +553,9 @@ static const struct mtk_pinctrl_devdata mt2712_pinctrl_data = {
	.n_grp_cls = ARRAY_SIZE(mt2712_drv_grp),
	.pin_drv_grp = mt2712_pin_drv,
	.n_pin_drv_grps = ARRAY_SIZE(mt2712_pin_drv),
	.spec_pull_set = mt2712_spec_pull_set,
	.spec_pupd = mt2712_spec_pupd,
	.n_spec_pupd = ARRAY_SIZE(mt2712_spec_pupd),
	.spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
	.spec_ies_smt_set = mt2712_ies_smt_set,
	.dir_offset = 0x0000,
	.pullen_offset = 0x0100,
+3 −8
Original line number Diff line number Diff line
@@ -172,13 +172,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt8127_spec_pupd[] = {
	MTK_PIN_PUPD_SPEC_SR(142, 0xdc0, 2, 0, 1),	/* EINT21 */
};

static int mt8127_spec_pull_set(struct regmap *regmap, unsigned int pin,
		unsigned char align, bool isup, unsigned int r1r0)
{
	return mtk_pctrl_spec_pull_set_samereg(regmap, mt8127_spec_pupd,
		ARRAY_SIZE(mt8127_spec_pupd), pin, align, isup, r1r0);
}

static const struct mtk_pin_ies_smt_set mt8127_ies_set[] = {
	MTK_PIN_IES_SMT_SPEC(0, 9, 0x900, 0),
	MTK_PIN_IES_SMT_SPEC(10, 13, 0x900, 1),
@@ -279,7 +272,9 @@ static const struct mtk_pinctrl_devdata mt8127_pinctrl_data = {
	.n_grp_cls = ARRAY_SIZE(mt8127_drv_grp),
	.pin_drv_grp = mt8127_pin_drv,
	.n_pin_drv_grps = ARRAY_SIZE(mt8127_pin_drv),
	.spec_pull_set = mt8127_spec_pull_set,
	.spec_pupd = mt8127_spec_pupd,
	.n_spec_pupd = ARRAY_SIZE(mt8127_spec_pupd),
	.spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
	.spec_ies_smt_set = mt8127_ies_smt_set,
	.dir_offset = 0x0000,
	.pullen_offset = 0x0100,
+4 −2
Original line number Diff line number Diff line
@@ -230,12 +230,14 @@ static const struct mtk_spec_pull_set spec_pupd[] = {
	SPEC_PULL(202, PUPD_BASE2+0xc0, 10, R0_BASE1, 12, R1_BASE2+0xc0, 10)
};

static int spec_pull_set(struct regmap *regmap, unsigned int pin,
		unsigned char align, bool isup, unsigned int r1r0)
static int spec_pull_set(struct regmap *regmap,
		const struct mtk_pinctrl_devdata *devdata,
		unsigned int pin, bool isup, unsigned int r1r0)
{
	unsigned int i;
	unsigned int reg_pupd, reg_set_r0, reg_set_r1;
	unsigned int reg_rst_r0, reg_rst_r1;
	unsigned char align = devdata->port_align;
	bool find = false;

	for (i = 0; i < ARRAY_SIZE(spec_pupd); i++) {
+3 −8
Original line number Diff line number Diff line
@@ -186,13 +186,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt8167_spec_pupd[] = {
	MTK_PIN_PUPD_SPEC_SR(120, 0xe00, 2, 1, 0),
};

static int mt8167_spec_pull_set(struct regmap *regmap, unsigned int pin,
			unsigned char align, bool isup, unsigned int r1r0)
{
	return mtk_pctrl_spec_pull_set_samereg(regmap, mt8167_spec_pupd,
		ARRAY_SIZE(mt8167_spec_pupd), pin, align, isup, r1r0);
}

static const struct mtk_pin_ies_smt_set mt8167_ies_set[] = {
	MTK_PIN_IES_SMT_SPEC(0, 6, 0x900, 2),
	MTK_PIN_IES_SMT_SPEC(7, 10, 0x900, 3),
@@ -311,7 +304,9 @@ static const struct mtk_pinctrl_devdata mt8167_pinctrl_data = {
	.n_grp_cls = ARRAY_SIZE(mt8167_drv_grp),
	.pin_drv_grp = mt8167_pin_drv,
	.n_pin_drv_grps = ARRAY_SIZE(mt8167_pin_drv),
	.spec_pull_set = mt8167_spec_pull_set,
	.spec_pupd = mt8167_spec_pupd,
	.n_spec_pupd = ARRAY_SIZE(mt8167_spec_pupd),
	.spec_pull_set = mtk_pctrl_spec_pull_set_samereg,
	.spec_ies_smt_set = mt8167_ies_smt_set,
	.dir_offset = 0x0000,
	.pullen_offset = 0x0500,
Loading