Skip to content

Commit 8aec97d

Browse files
metiulekmkrzk
authored andcommitted
pinctrl: samsung: do not offset pinctrl numberspaces
Past versions of this driver have manually calculated base values for both the pinctrl numberspace and the global GPIO numberspace, giving both the same values. This was necessary for the global GPIO numberspace, since its values need to be unique system-wide. However, it was not necessary for the pinctrl numberspace, since its values only need to be unique for a single instance of the pinctrl device. It was just convenient to use the same values for both spaces. Right now those calculations are only used for the pinctrl numberspace, since GPIO numberspace bases are selected by the GPIO subsystem. Therefore, those calculations are unnecessary. Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> Tested-by: Sam Protsenko <semen.protsenko@linaro.org> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Link: https://lore.kernel.org/r/20231006125557.212681-5-m.majewski2@samsung.com Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
1 parent deb7916 commit 8aec97d

File tree

2 files changed

+4
-13
lines changed

2 files changed

+4
-13
lines changed

drivers/pinctrl/samsung/pinctrl-samsung.c

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ static struct pin_config {
4545
{ "samsung,pin-val", PINCFG_TYPE_DAT },
4646
};
4747

48-
static unsigned int pin_base;
49-
5048
static int samsung_get_group_count(struct pinctrl_dev *pctldev)
5149
{
5250
struct samsung_pinctrl_drv_data *pmx = pinctrl_dev_get_drvdata(pctldev);
@@ -389,8 +387,7 @@ static void samsung_pinmux_setup(struct pinctrl_dev *pctldev, unsigned selector,
389387
func = &drvdata->pmx_functions[selector];
390388
grp = &drvdata->pin_groups[group];
391389

392-
pin_to_reg_bank(drvdata, grp->pins[0] - drvdata->pin_base,
393-
&reg, &pin_offset, &bank);
390+
pin_to_reg_bank(drvdata, grp->pins[0], &reg, &pin_offset, &bank);
394391
type = bank->type;
395392
mask = (1 << type->fld_width[PINCFG_TYPE_FUNC]) - 1;
396393
shift = pin_offset * type->fld_width[PINCFG_TYPE_FUNC];
@@ -441,8 +438,7 @@ static int samsung_pinconf_rw(struct pinctrl_dev *pctldev, unsigned int pin,
441438
unsigned long flags;
442439

443440
drvdata = pinctrl_dev_get_drvdata(pctldev);
444-
pin_to_reg_bank(drvdata, pin - drvdata->pin_base, &reg_base,
445-
&pin_offset, &bank);
441+
pin_to_reg_bank(drvdata, pin, &reg_base, &pin_offset, &bank);
446442
type = bank->type;
447443

448444
if (cfg_type >= PINCFG_TYPE_NUM || !type->fld_width[cfg_type])
@@ -671,7 +667,7 @@ static int samsung_add_pin_ranges(struct gpio_chip *gc)
671667

672668
bank->grange.name = bank->name;
673669
bank->grange.id = bank->id;
674-
bank->grange.pin_base = bank->drvdata->pin_base + bank->pin_base;
670+
bank->grange.pin_base = bank->pin_base;
675671
bank->grange.base = gc->base;
676672
bank->grange.npins = bank->nr_pins;
677673
bank->grange.gc = &bank->gpio_chip;
@@ -891,7 +887,7 @@ static int samsung_pinctrl_register(struct platform_device *pdev,
891887

892888
/* dynamically populate the pin number and pin name for pindesc */
893889
for (pin = 0, pdesc = pindesc; pin < ctrldesc->npins; pin++, pdesc++)
894-
pdesc->number = pin + drvdata->pin_base;
890+
pdesc->number = pin;
895891

896892
/*
897893
* allocate space for storing the dynamically generated names for all
@@ -1129,9 +1125,6 @@ samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d,
11291125

11301126
samsung_banks_node_get(&pdev->dev, d);
11311127

1132-
d->pin_base = pin_base;
1133-
pin_base += d->nr_pins;
1134-
11351128
return ctrl;
11361129
}
11371130

drivers/pinctrl/samsung/pinctrl-samsung.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,6 @@ struct samsung_pin_ctrl {
269269
* @nr_groups: number of such pin groups.
270270
* @pmx_functions: list of pin functions available to the driver.
271271
* @nr_function: number of such pin functions.
272-
* @pin_base: starting system wide pin number.
273272
* @nr_pins: number of pins supported by the controller.
274273
* @retention_ctrl: retention control runtime data.
275274
* @suspend: platform specific suspend callback, executed during pin controller
@@ -293,7 +292,6 @@ struct samsung_pinctrl_drv_data {
293292

294293
struct samsung_pin_bank *pin_banks;
295294
unsigned int nr_banks;
296-
unsigned int pin_base;
297295
unsigned int nr_pins;
298296

299297
struct samsung_retention_ctrl *retention_ctrl;

0 commit comments

Comments
 (0)