Commit f5843492 authored by Stefan Agner's avatar Stefan Agner Committed by Linus Walleij

pinctrl: imx: use struct imx_pinctrl_soc_info as a const

For some SoCs the struct imx_pinctrl_soc_info is passed through
of_device_id.data which is const. Most variables are already const
or otherwise not written. However, some fields are modified at
runtime. Move those fields to the dynamically allocated struct
imx_pinctrl.

Fixes: b3060044 ("pinctrl: freescale: imx7d: make of_device_ids const")
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Arvind Yadav <arvind.yadav.cs@gmail.com>
Cc: Gary Bisson <gary.bisson@boundarydevices.com>
Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
Acked-by: default avatarDong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 32e21f08
This diff is collapsed.
...@@ -58,14 +58,10 @@ struct imx_cfg_params_decode { ...@@ -58,14 +58,10 @@ struct imx_cfg_params_decode {
}; };
struct imx_pinctrl_soc_info { struct imx_pinctrl_soc_info {
struct device *dev;
const struct pinctrl_pin_desc *pins; const struct pinctrl_pin_desc *pins;
unsigned int npins; unsigned int npins;
struct imx_pin_reg *pin_regs;
unsigned int group_index;
unsigned int flags; unsigned int flags;
const char *gpr_compatible; const char *gpr_compatible;
struct mutex mutex;
/* MUX_MODE shift and mask in case SHARE_MUX_CONF_REG */ /* MUX_MODE shift and mask in case SHARE_MUX_CONF_REG */
unsigned int mux_mask; unsigned int mux_mask;
...@@ -95,7 +91,10 @@ struct imx_pinctrl { ...@@ -95,7 +91,10 @@ struct imx_pinctrl {
struct pinctrl_dev *pctl; struct pinctrl_dev *pctl;
void __iomem *base; void __iomem *base;
void __iomem *input_sel_base; void __iomem *input_sel_base;
struct imx_pinctrl_soc_info *info; const struct imx_pinctrl_soc_info *info;
struct imx_pin_reg *pin_regs;
unsigned int group_index;
struct mutex mutex;
}; };
#define IMX_CFG_PARAMS_DECODE(p, m, o) \ #define IMX_CFG_PARAMS_DECODE(p, m, o) \
...@@ -117,5 +116,5 @@ struct imx_pinctrl { ...@@ -117,5 +116,5 @@ struct imx_pinctrl {
#define IOMUXC_CONFIG_SION (0x1 << 4) #define IOMUXC_CONFIG_SION (0x1 << 4)
int imx_pinctrl_probe(struct platform_device *pdev, int imx_pinctrl_probe(struct platform_device *pdev,
struct imx_pinctrl_soc_info *info); const struct imx_pinctrl_soc_info *info);
#endif /* __DRIVERS_PINCTRL_IMX_H */ #endif /* __DRIVERS_PINCTRL_IMX_H */
...@@ -307,11 +307,10 @@ static int imx7ulp_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, ...@@ -307,11 +307,10 @@ static int imx7ulp_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
unsigned offset, bool input) unsigned offset, bool input)
{ {
struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev); struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
struct imx_pinctrl_soc_info *info = ipctl->info;
const struct imx_pin_reg *pin_reg; const struct imx_pin_reg *pin_reg;
u32 reg; u32 reg;
pin_reg = &info->pin_regs[offset]; pin_reg = &ipctl->pin_regs[offset];
if (pin_reg->mux_reg == -1) if (pin_reg->mux_reg == -1)
return -EINVAL; return -EINVAL;
......
...@@ -300,11 +300,10 @@ static int vf610_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, ...@@ -300,11 +300,10 @@ static int vf610_pmx_gpio_set_direction(struct pinctrl_dev *pctldev,
unsigned offset, bool input) unsigned offset, bool input)
{ {
struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev); struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
struct imx_pinctrl_soc_info *info = ipctl->info;
const struct imx_pin_reg *pin_reg; const struct imx_pin_reg *pin_reg;
u32 reg; u32 reg;
pin_reg = &info->pin_regs[offset]; pin_reg = &ipctl->pin_regs[offset];
if (pin_reg->mux_reg == -1) if (pin_reg->mux_reg == -1)
return -EINVAL; return -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment