Re: [PATCH] pinctrl: qcom: support gpio_chip .set_config call
From: Shawn Guo <hidden>
Date: 2021-03-02 08:11:24
Also in:
linux-arm-msm
On Mon, Mar 01, 2021 at 07:07:03PM +0200, Andy Shevchenko wrote:
On Sun, Feb 28, 2021 at 4:55 AM Shawn Guo [off-list ref] wrote:quoted
In case of ACPI boot, GPIO core does the right thing to parse GPIO pin configs from ACPI table, and call into gpio_chip's .set_config hook for setting them up. It enables such support on qcom platform by using generic config function, which in turn calls into .pin_config_set of pinconf for setting up hardware. For qcom platform, it's possible to reuse pin group config functions for pin config hooks, because every pin is maintained as a single group. This change fixes the problem that Touchpad of Lenovo Flex 5G laptop doesn't work with ACPI boot, because PullUp config of Touchpad GpioInt pin is not set up by kernel driver.by the kernel ...quoted
.pin_config_group_get = msm_config_group_get, .pin_config_group_set = msm_config_group_set, + .pin_config_get = msm_config_group_get, + .pin_config_set = msm_config_group_set,This can't be right. They have different semantics.
As mentioned in the commit log, this works considering every pin is
maintained as a single group on Qualcomm platform. So configuring one
pin is essentially to configure the group containing the pin. I can do
something like below, if you think that's easier to understand.
static int msm_config_pin_get(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *config)
{
return msm_config_group_get(pctldev, pin, config);
}
static int msm_config_pin_set(struct pinctrl_dev *pctldev, unsigned pin,
unsigned long *configs, unsigned num_configs)
{
return msm_config_group_set(pctldev, pin, configs, num_configs);
}
static const struct pinconf_ops msm_pinconf_ops = {
...
.pin_config_get = msm_config_pin_get,
.pin_config_set = msm_config_pin_set,
};
Shawn