Messages in this thread | | | Date | Mon, 20 Jan 2020 08:05:08 +0000 | From | Lee Jones <> | Subject | Re: [PATCH v4] mfd: syscon: Add arguments support for syscon reference |
| |
On Sun, 19 Jan 2020, Orson Zhai wrote:
> There are a lot of similar global registers being used across multiple SoCs > from Unisoc. But most of these registers are assigned with different offset > for different SoCs. It is hard to handle all of them in an all-in-one > kernel image. > > Add a helper function to get regmap with arguments where we could put some > extra information such as the offset value. > > Signed-off-by: Orson Zhai <orson.zhai@unisoc.com> > Tested-by: Baolin Wang <baolin.wang@unisoc.com> > Reviewed-by: Arnd Bergmann <arnd@arndb.de> > Acked-by: Lee Jones <lee.jones@linaro.org> > --- > > V3 Change: > Rebase on latest kernel v5.5-rc6 for Lee. > > V4 Change: > Remove trailing spaces according to checkpatch. > > drivers/mfd/syscon.c | 29 +++++++++++++++++++++++++++++ > include/linux/mfd/syscon.h | 14 ++++++++++++++ > 2 files changed, 43 insertions(+)
Nope, still not working:
Applying patch #1181935 using "git am -s -3" Description: [v4] mfd: syscon: Add arguments support for syscon reference Applying: mfd: syscon: Add arguments support for syscon reference Using index info to reconstruct a base tree... M drivers/mfd/syscon.c /home/lee/projects/linux/kernel/.git/worktrees/mfd/rebase-apply/patch:25: indent with spaces. const char *property, /home/lee/projects/linux/kernel/.git/worktrees/mfd/rebase-apply/patch:26: indent with spaces. int arg_count, /home/lee/projects/linux/kernel/.git/worktrees/mfd/rebase-apply/patch:27: indent with spaces. unsigned int *out_args) /home/lee/projects/linux/kernel/.git/worktrees/mfd/rebase-apply/patch:36: indent with spaces. 0, &args); /home/lee/projects/linux/kernel/.git/worktrees/mfd/rebase-apply/patch:38: indent with spaces. return ERR_PTR(rc); error: patch failed: drivers/mfd/syscon.c:224 error: drivers/mfd/syscon.c: patch does not apply error: patch failed: include/linux/mfd/syscon.h:23 error: include/linux/mfd/syscon.h: patch does not apply error: Did you hand edit your patch? It does not apply to blobs recorded in its index. Patch failed at 0001 mfd: syscon: Add arguments support for syscon reference hint: Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". 'git am' failed with exit status 128
Please talk me through how you are sending the patch.
> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c > index e22197c..2918b05 100644 > --- a/drivers/mfd/syscon.c > +++ b/drivers/mfd/syscon.c > @@ -224,6 +224,35 @@ struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np, > } > EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle); > > +struct regmap *syscon_regmap_lookup_by_phandle_args(struct device_node *np, > + const char *property, > + int arg_count, > + unsigned int *out_args) > +{ > + struct device_node *syscon_np; > + struct of_phandle_args args; > + struct regmap *regmap; > + unsigned int index; > + int rc; > + > + rc = of_parse_phandle_with_fixed_args(np, property, arg_count, > + 0, &args); > + if (rc) > + return ERR_PTR(rc); > + > + syscon_np = args.np; > + if (!syscon_np) > + return ERR_PTR(-ENODEV); > + > + regmap = syscon_node_to_regmap(syscon_np); > + for (index = 0; index < arg_count; index++) > + out_args[index] = args.args[index]; > + of_node_put(syscon_np); > + > + return regmap; > +} > +EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_phandle_args); > + > static int syscon_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h > index 112dc66..714cab1 100644 > --- a/include/linux/mfd/syscon.h > +++ b/include/linux/mfd/syscon.h > @@ -23,6 +23,11 @@ extern struct regmap *syscon_regmap_lookup_by_compatible(const char *s); > extern struct regmap *syscon_regmap_lookup_by_phandle( > struct device_node *np, > const char *property); > +extern struct regmap *syscon_regmap_lookup_by_phandle_args( > + struct device_node *np, > + const char *property, > + int arg_count, > + unsigned int *out_args); > #else > static inline struct regmap *device_node_to_regmap(struct device_node *np) > { > @@ -45,6 +50,15 @@ static inline struct regmap *syscon_regmap_lookup_by_phandle( > { > return ERR_PTR(-ENOTSUPP); > } > + > +static struct regmap *syscon_regmap_lookup_by_phandle_args( > + struct device_node *np, > + const char *property, > + int arg_count, > + unsigned int *out_args) > +{ > + return ERR_PTR(-ENOTSUPP); > +} > #endif > > #endif /* __LINUX_MFD_SYSCON_H__ */
-- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
| |