gpio: Use callback presence to determine need of valid_mask
After we switched the two drivers that have .need_valid_mask set to use the callback for setting up the .valid_mask, we can just use the presence of the .init_valid_mask() callback (or the OF reserved ranges, nota bene) to determine whether to allocate the mask or not and we can drop the .need_valid_mask field altogether. Cc: Benjamin Gaignard <benjamin.gaignard@st.com> Cc: Amelie Delaunay <amelie.delaunay@st.com> Cc: Stephen Boyd <swboyd@chromium.org> Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20190819093058.10863-1-linus.walleij@linaro.org
This commit is contained in:
parent
da9b142ab2
commit
eb1e8bd6e3
|
@ -363,9 +363,7 @@ static unsigned long *gpiochip_allocate_mask(struct gpio_chip *chip)
|
||||||
|
|
||||||
static int gpiochip_alloc_valid_mask(struct gpio_chip *gc)
|
static int gpiochip_alloc_valid_mask(struct gpio_chip *gc)
|
||||||
{
|
{
|
||||||
if (of_gpio_need_valid_mask(gc))
|
if (!(of_gpio_need_valid_mask(gc) || gc->init_valid_mask))
|
||||||
gc->need_valid_mask = true;
|
|
||||||
if (!gc->need_valid_mask)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
gc->valid_mask = gpiochip_allocate_mask(gc);
|
gc->valid_mask = gpiochip_allocate_mask(gc);
|
||||||
|
|
|
@ -662,7 +662,6 @@ static int stmfx_pinctrl_probe(struct platform_device *pdev)
|
||||||
pctl->gpio_chip.ngpio = pctl->pctl_desc.npins;
|
pctl->gpio_chip.ngpio = pctl->pctl_desc.npins;
|
||||||
pctl->gpio_chip.can_sleep = true;
|
pctl->gpio_chip.can_sleep = true;
|
||||||
pctl->gpio_chip.of_node = np;
|
pctl->gpio_chip.of_node = np;
|
||||||
pctl->gpio_chip.need_valid_mask = true;
|
|
||||||
pctl->gpio_chip.init_valid_mask = stmfx_pinctrl_gpio_init_valid_mask;
|
pctl->gpio_chip.init_valid_mask = stmfx_pinctrl_gpio_init_valid_mask;
|
||||||
|
|
||||||
ret = devm_gpiochip_add_data(pctl->dev, &pctl->gpio_chip, pctl);
|
ret = devm_gpiochip_add_data(pctl->dev, &pctl->gpio_chip, pctl);
|
||||||
|
|
|
@ -654,7 +654,6 @@ static const struct gpio_chip msm_gpio_template = {
|
||||||
.request = gpiochip_generic_request,
|
.request = gpiochip_generic_request,
|
||||||
.free = gpiochip_generic_free,
|
.free = gpiochip_generic_free,
|
||||||
.dbg_show = msm_gpio_dbg_show,
|
.dbg_show = msm_gpio_dbg_show,
|
||||||
.init_valid_mask = msm_gpio_init_valid_mask,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* For dual-edge interrupts in software, since some hardware has no
|
/* For dual-edge interrupts in software, since some hardware has no
|
||||||
|
@ -1016,7 +1015,8 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
|
||||||
chip->parent = pctrl->dev;
|
chip->parent = pctrl->dev;
|
||||||
chip->owner = THIS_MODULE;
|
chip->owner = THIS_MODULE;
|
||||||
chip->of_node = pctrl->dev->of_node;
|
chip->of_node = pctrl->dev->of_node;
|
||||||
chip->need_valid_mask = msm_gpio_needs_valid_mask(pctrl);
|
if (msm_gpio_needs_valid_mask(pctrl))
|
||||||
|
chip->init_valid_mask = msm_gpio_init_valid_mask;
|
||||||
|
|
||||||
pctrl->irq_chip.name = "msmgpio";
|
pctrl->irq_chip.name = "msmgpio";
|
||||||
pctrl->irq_chip.irq_enable = msm_gpio_irq_enable;
|
pctrl->irq_chip.irq_enable = msm_gpio_irq_enable;
|
||||||
|
|
|
@ -403,15 +403,6 @@ struct gpio_chip {
|
||||||
struct gpio_irq_chip irq;
|
struct gpio_irq_chip irq;
|
||||||
#endif /* CONFIG_GPIOLIB_IRQCHIP */
|
#endif /* CONFIG_GPIOLIB_IRQCHIP */
|
||||||
|
|
||||||
/**
|
|
||||||
* @need_valid_mask:
|
|
||||||
*
|
|
||||||
* If set core allocates @valid_mask with all its values initialized
|
|
||||||
* with init_valid_mask() or set to one if init_valid_mask() is not
|
|
||||||
* defined
|
|
||||||
*/
|
|
||||||
bool need_valid_mask;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @valid_mask:
|
* @valid_mask:
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue