pinctrl: amd: Add amd_get_iomux_res function
Presently there is no way to change pinmux configuration run time. Hence add a function to get IOMUX resource which can be used to configure IOMUX GPIO pins run time. Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20220601152900.1012813-6-Basavaraj.Natikar@amd.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
a1e9bb597a
commit
79bb5c7fe8
|
@ -963,6 +963,30 @@ static struct pinctrl_desc amd_pinctrl_desc = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void amd_get_iomux_res(struct amd_gpio *gpio_dev)
|
||||||
|
{
|
||||||
|
struct pinctrl_desc *desc = &amd_pinctrl_desc;
|
||||||
|
struct device *dev = &gpio_dev->pdev->dev;
|
||||||
|
int index;
|
||||||
|
|
||||||
|
index = device_property_match_string(dev, "pinctrl-resource-names", "iomux");
|
||||||
|
if (index < 0) {
|
||||||
|
dev_warn(dev, "failed to get iomux index\n");
|
||||||
|
goto out_no_pinmux;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpio_dev->iomux_base = devm_platform_ioremap_resource(gpio_dev->pdev, index);
|
||||||
|
if (IS_ERR(gpio_dev->iomux_base)) {
|
||||||
|
dev_warn(dev, "Failed to get iomux %d io resource\n", index);
|
||||||
|
goto out_no_pinmux;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
out_no_pinmux:
|
||||||
|
desc->pmxops = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static int amd_gpio_probe(struct platform_device *pdev)
|
static int amd_gpio_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -1020,6 +1044,7 @@ static int amd_gpio_probe(struct platform_device *pdev)
|
||||||
gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups);
|
gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups);
|
||||||
|
|
||||||
amd_pinctrl_desc.name = dev_name(&pdev->dev);
|
amd_pinctrl_desc.name = dev_name(&pdev->dev);
|
||||||
|
amd_get_iomux_res(gpio_dev);
|
||||||
gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc,
|
gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc,
|
||||||
gpio_dev);
|
gpio_dev);
|
||||||
if (IS_ERR(gpio_dev->pctrl)) {
|
if (IS_ERR(gpio_dev->pctrl)) {
|
||||||
|
|
|
@ -83,6 +83,7 @@ struct amd_function {
|
||||||
struct amd_gpio {
|
struct amd_gpio {
|
||||||
raw_spinlock_t lock;
|
raw_spinlock_t lock;
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
|
void __iomem *iomux_base;
|
||||||
|
|
||||||
const struct pingroup *groups;
|
const struct pingroup *groups;
|
||||||
u32 ngroups;
|
u32 ngroups;
|
||||||
|
|
Loading…
Reference in New Issue