All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dong Aisheng <b29396@freescale.com>
To: Xiubo Li-B47053 <Li.Xiubo@freescale.com>
Cc: Dong Aisheng-B29396 <Aisheng.Dong@freescale.com>,
	Pankaj Dubey <pankaj.dubey@samsung.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kgene.kim@samsung.com" <kgene.kim@samsung.com>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"naushad@samsung.com" <naushad@samsung.com>,
	"tomasz.figa@gmail.com" <tomasz.figa@gmail.com>,
	"joshi@samsung.com" <joshi@samsung.com>,
	"thomas.ab@samsung.com" <thomas.ab@samsung.com>,
	"vikas.sajjan@samsung.com" <vikas.sajjan@samsung.com>,
	"chow.kim@samsung.com" <chow.kim@samsung.com>,
	"lee.jones@linaro.org" <lee.jones@linaro.org>,
	'Boris BREZILLON' <boris.brezillon@free-electrons.com>,
	'Geert Uytterhoeven' <geert+renesas@glider.be>
Subject: Re: [PATCH v3] mfd: syscon: Decouple syscon interface from platform devices
Date: Fri, 19 Sep 2014 13:46:04 +0800	[thread overview]
Message-ID: <20140919054602.GC19346@shlinux1.ap.freescale.net> (raw)
In-Reply-To: <8e0ba684d5fe4663a8842336385ed7ad@BY2PR0301MB0613.namprd03.prod.outlook.com>

On Fri, Sep 19, 2014 at 01:20:18PM +0800, Xiubo Li-B47053 wrote:
> [...]
> > >    create child: /dcsr@20000000/dcsr-atbrepl@3a8000
> > >    create child: /dcsr@20000000/dcsr-tsgen-ctrl@3a9000
> > >    create child: /dcsr@20000000/dcsr-tsgen-read@3aa000
> > >    create child: /regulators/regulator@0
> > >    ...
> > >
> > > As default the Linux will create all the platform device for each DT node,
> > which
> > > Can be found from "drivers/of/platform.c".
> > >
> > > So we can get the pdev node using the specified DT node, and feel safe to
> > use
> > > it as Pankaj's patch does.
> > >
> > 
> > I mean before the devices are populated from device tree.
> > For example, we usually call of_platform_populate in .init_machine.
> > Before it, we may not be able to get it's device, isn't it?
> > 
> 
> Yes, right.
> 
> For this case, we'd better create the pdev or dev manually for the first time
> We use it, right ?

Yes, that's my understanding.

Regards
Dong Aisheng

> 
> Thanks,
> 
> BRs
> Xiubo
> 
> 
> > Regards
> > Dong Aisheng
> > 
> > > And also we must make sure that the 'syscon' DT nodes has the compatible
> > prop.
> > >
> > > Thanks,
> > >
> > > BRs
> > > Xiubo
> > >
> > >
> > > > Regards
> > > > Dong Aisheng
> > > >
> > > > > ----
> > > > > static struct syscon *of_syscon_register(struct device_node *np)
> > > > >  {
> > > > > +	struct platform_device *pdev;
> > > > >  	struct syscon *syscon;
> > > > >  	struct regmap *regmap;
> > > > >  	void __iomem *base;
> > > > > @@ -142,7 +144,11 @@ static struct syscon *of_syscon_register(struct
> > > > > device_node *np)
> > > > >  	if (!base)
> > > > >  		return ERR_PTR(-ENOMEM);
> > > > >
> > > > > -	regmap = regmap_init_mmio(NULL, base, &syscon_regmap_config);
> > > > > +	pdev = of_find_device_by_node(np);
> > > > > +	if (!(&pdev->dev))
> > > > > +		return ERR_PTR(-ENODEV);
> > > > > +
> > > > > +	regmap = regmap_init_mmio(&pdev->dev, base,
> > &syscon_regmap_config);
> > > > >  	if (IS_ERR(regmap)) {
> > > > >  		pr_err("regmap init failed\n");
> > > > >  		return ERR_CAST(regmap);
> > > > > -------
> > > > >
> > > > > I have tested this in linux-next and it works well. In this way there
> > won't
> > > > > be any issues of
> > > > > dereferencing NULL pointer in regmap.c and at the same time, if DT has
> > > > > {big,little}-endian
> > > > > optional property in syscon device node, it will be taken care.
> > > > >
> > > > > So I would wait for Arnd's opinion about above mentioned changes and
> > then
> > > > > post a new
> > > > > change after addressing Arnd's minor comment along with this fix in next
> > > > > revision.
> > > > >
> > > > >
> > > > > Thanks,
> > > > > Pankaj Dubey
> > > > > > Maybe we could consider create device structure for each syscon
> > compatible
> > > > > device in
> > > > > > syscon driver in of_syscon_register in first time which seems to be
> > > > > reasonable.
> > > > > >
> > > > > > Regards
> > > > > > Dong Aisheng
> > > > > >
> > > > > > > --------------------------------------------
> > > > > > > Subject: [PATCH] regmap: fix NULL pointer dereference in
> > > > > > > regmap_get_val_endian
> > > > > > >
> > > > > > > Recent commits for getting reg endianess causing NULL pointer
> > > > > > > dereference if dev is passed NULL in regmap_init_mmio. This patch
> > > > > > > fixes this issue, and allows to parse reg endianess only if dev and
> > > > > > > dev->of_node exist.
> > > > > > >
> > > > > > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > > > > > > ---
> > > > > > >  drivers/base/regmap/regmap.c |   23 ++++++++++++++---------
> > > > > > >  1 file changed, 14 insertions(+), 9 deletions(-)
> > > > > > >
> > > > > > > diff --git a/drivers/base/regmap/regmap.c
> > > > > > > b/drivers/base/regmap/regmap.c index f2281af..455a877 100644
> > > > > > > --- a/drivers/base/regmap/regmap.c
> > > > > > > +++ b/drivers/base/regmap/regmap.c
> > > > > > > @@ -477,7 +477,7 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  					const struct regmap_bus *bus,
> > > > > > >  					const struct regmap_config *config)
> > > > > {
> > > > > > > -	struct device_node *np = dev->of_node;
> > > > > > > +	struct device_node *np;
> > > > > > >  	enum regmap_endian endian;
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the regmap config
> > > > */
> > > > > > > @@ -487,15 +487,20 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > >  		return endian;
> > > > > > >
> > > > > > > -	/* Parse the device's DT node for an endianness specification */
> > > > > > > -	if (of_property_read_bool(np, "big-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_BIG;
> > > > > > > -	else if (of_property_read_bool(np, "little-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +	/* If the dev and dev->of_node exist try to get endianness from
> > > > DT
> > > > > > > */
> > > > > > > +	if (dev && dev->of_node) {
> > > > > > > +		np = dev->of_node;
> > > > > > >
> > > > > > > -	/* If the endianness was specified in DT, use that */
> > > > > > > -	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > -		return endian;
> > > > > > > +		/* Parse the device's DT node for an endianness
> > > > > > > specification */
> > > > > > > +		if (of_property_read_bool(np, "big-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_BIG;
> > > > > > > +		else if (of_property_read_bool(np, "little-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +
> > > > > > > +		/* If the endianness was specified in DT, use that */
> > > > > > > +		if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > +			return endian;
> > > > > > > +	}
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the bus config */
> > > > > > >  	if (bus && bus->val_format_endian_default)
> > > > > > > --
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Pankaj Dubey
> > > > > > >
> > > > > > > > Regards
> > > > > > > > Dong Aisheng
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Pankaj Dubey
> > > > > > > > >
> > > > > > > > > > Regards
> > > > > > > > > > Dong Aisheng
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > linux-arm-kernel mailing list
> > > > > > > > > > > linux-arm-kernel@lists.infradead.org
> > > > > > > > > > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > > > > > > > >
> > > > > > >
> > > > >

WARNING: multiple messages have this Message-ID (diff)
From: b29396@freescale.com (Dong Aisheng)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3] mfd: syscon: Decouple syscon interface from platform devices
Date: Fri, 19 Sep 2014 13:46:04 +0800	[thread overview]
Message-ID: <20140919054602.GC19346@shlinux1.ap.freescale.net> (raw)
In-Reply-To: <8e0ba684d5fe4663a8842336385ed7ad@BY2PR0301MB0613.namprd03.prod.outlook.com>

On Fri, Sep 19, 2014 at 01:20:18PM +0800, Xiubo Li-B47053 wrote:
> [...]
> > >    create child: /dcsr at 20000000/dcsr-atbrepl at 3a8000
> > >    create child: /dcsr at 20000000/dcsr-tsgen-ctrl at 3a9000
> > >    create child: /dcsr at 20000000/dcsr-tsgen-read at 3aa000
> > >    create child: /regulators/regulator at 0
> > >    ...
> > >
> > > As default the Linux will create all the platform device for each DT node,
> > which
> > > Can be found from "drivers/of/platform.c".
> > >
> > > So we can get the pdev node using the specified DT node, and feel safe to
> > use
> > > it as Pankaj's patch does.
> > >
> > 
> > I mean before the devices are populated from device tree.
> > For example, we usually call of_platform_populate in .init_machine.
> > Before it, we may not be able to get it's device, isn't it?
> > 
> 
> Yes, right.
> 
> For this case, we'd better create the pdev or dev manually for the first time
> We use it, right ?

Yes, that's my understanding.

Regards
Dong Aisheng

> 
> Thanks,
> 
> BRs
> Xiubo
> 
> 
> > Regards
> > Dong Aisheng
> > 
> > > And also we must make sure that the 'syscon' DT nodes has the compatible
> > prop.
> > >
> > > Thanks,
> > >
> > > BRs
> > > Xiubo
> > >
> > >
> > > > Regards
> > > > Dong Aisheng
> > > >
> > > > > ----
> > > > > static struct syscon *of_syscon_register(struct device_node *np)
> > > > >  {
> > > > > +	struct platform_device *pdev;
> > > > >  	struct syscon *syscon;
> > > > >  	struct regmap *regmap;
> > > > >  	void __iomem *base;
> > > > > @@ -142,7 +144,11 @@ static struct syscon *of_syscon_register(struct
> > > > > device_node *np)
> > > > >  	if (!base)
> > > > >  		return ERR_PTR(-ENOMEM);
> > > > >
> > > > > -	regmap = regmap_init_mmio(NULL, base, &syscon_regmap_config);
> > > > > +	pdev = of_find_device_by_node(np);
> > > > > +	if (!(&pdev->dev))
> > > > > +		return ERR_PTR(-ENODEV);
> > > > > +
> > > > > +	regmap = regmap_init_mmio(&pdev->dev, base,
> > &syscon_regmap_config);
> > > > >  	if (IS_ERR(regmap)) {
> > > > >  		pr_err("regmap init failed\n");
> > > > >  		return ERR_CAST(regmap);
> > > > > -------
> > > > >
> > > > > I have tested this in linux-next and it works well. In this way there
> > won't
> > > > > be any issues of
> > > > > dereferencing NULL pointer in regmap.c and at the same time, if DT has
> > > > > {big,little}-endian
> > > > > optional property in syscon device node, it will be taken care.
> > > > >
> > > > > So I would wait for Arnd's opinion about above mentioned changes and
> > then
> > > > > post a new
> > > > > change after addressing Arnd's minor comment along with this fix in next
> > > > > revision.
> > > > >
> > > > >
> > > > > Thanks,
> > > > > Pankaj Dubey
> > > > > > Maybe we could consider create device structure for each syscon
> > compatible
> > > > > device in
> > > > > > syscon driver in of_syscon_register in first time which seems to be
> > > > > reasonable.
> > > > > >
> > > > > > Regards
> > > > > > Dong Aisheng
> > > > > >
> > > > > > > --------------------------------------------
> > > > > > > Subject: [PATCH] regmap: fix NULL pointer dereference in
> > > > > > > regmap_get_val_endian
> > > > > > >
> > > > > > > Recent commits for getting reg endianess causing NULL pointer
> > > > > > > dereference if dev is passed NULL in regmap_init_mmio. This patch
> > > > > > > fixes this issue, and allows to parse reg endianess only if dev and
> > > > > > > dev->of_node exist.
> > > > > > >
> > > > > > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > > > > > > ---
> > > > > > >  drivers/base/regmap/regmap.c |   23 ++++++++++++++---------
> > > > > > >  1 file changed, 14 insertions(+), 9 deletions(-)
> > > > > > >
> > > > > > > diff --git a/drivers/base/regmap/regmap.c
> > > > > > > b/drivers/base/regmap/regmap.c index f2281af..455a877 100644
> > > > > > > --- a/drivers/base/regmap/regmap.c
> > > > > > > +++ b/drivers/base/regmap/regmap.c
> > > > > > > @@ -477,7 +477,7 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  					const struct regmap_bus *bus,
> > > > > > >  					const struct regmap_config *config)
> > > > > {
> > > > > > > -	struct device_node *np = dev->of_node;
> > > > > > > +	struct device_node *np;
> > > > > > >  	enum regmap_endian endian;
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the regmap config
> > > > */
> > > > > > > @@ -487,15 +487,20 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > >  		return endian;
> > > > > > >
> > > > > > > -	/* Parse the device's DT node for an endianness specification */
> > > > > > > -	if (of_property_read_bool(np, "big-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_BIG;
> > > > > > > -	else if (of_property_read_bool(np, "little-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +	/* If the dev and dev->of_node exist try to get endianness from
> > > > DT
> > > > > > > */
> > > > > > > +	if (dev && dev->of_node) {
> > > > > > > +		np = dev->of_node;
> > > > > > >
> > > > > > > -	/* If the endianness was specified in DT, use that */
> > > > > > > -	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > -		return endian;
> > > > > > > +		/* Parse the device's DT node for an endianness
> > > > > > > specification */
> > > > > > > +		if (of_property_read_bool(np, "big-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_BIG;
> > > > > > > +		else if (of_property_read_bool(np, "little-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +
> > > > > > > +		/* If the endianness was specified in DT, use that */
> > > > > > > +		if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > +			return endian;
> > > > > > > +	}
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the bus config */
> > > > > > >  	if (bus && bus->val_format_endian_default)
> > > > > > > --
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Pankaj Dubey
> > > > > > >
> > > > > > > > Regards
> > > > > > > > Dong Aisheng
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Pankaj Dubey
> > > > > > > > >
> > > > > > > > > > Regards
> > > > > > > > > > Dong Aisheng
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > linux-arm-kernel mailing list
> > > > > > > > > > > linux-arm-kernel at lists.infradead.org
> > > > > > > > > > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > > > > > > > >
> > > > > > >
> > > > >

WARNING: multiple messages have this Message-ID (diff)
From: Dong Aisheng <b29396@freescale.com>
To: Xiubo Li-B47053 <Li.Xiubo@freescale.com>
Cc: Dong Aisheng-B29396 <Aisheng.Dong@freescale.com>,
	Pankaj Dubey <pankaj.dubey@samsung.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-samsung-soc@vger.kernel.org" 
	<linux-samsung-soc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kgene.kim@samsung.com" <kgene.kim@samsung.com>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"naushad@samsung.com" <naushad@samsung.com>,
	"tomasz.figa@gmail.com" <tomasz.figa@gmail.com>,
	"joshi@samsung.com" <joshi@samsung.com>,
	"thomas.ab@samsung.com" <thomas.ab@samsung.com>,
	"vikas.sajjan@samsung.com" <vikas.sajjan@samsung.com>,
	"chow.kim@samsung.com" <chow.kim@samsung.com>,
	"lee.jones@linaro.org" <lee.jones@linaro.org>,
	"'Boris BREZILLON'" <boris.brezillon@free-electrons.com>,
	"'Geert Uytterhoeven'" <geert+renesas@glider.be>,
	"'Stephen Warren'" <swarren@nvidia.com>
Subject: Re: [PATCH v3] mfd: syscon: Decouple syscon interface from platform devices
Date: Fri, 19 Sep 2014 13:46:04 +0800	[thread overview]
Message-ID: <20140919054602.GC19346@shlinux1.ap.freescale.net> (raw)
In-Reply-To: <8e0ba684d5fe4663a8842336385ed7ad@BY2PR0301MB0613.namprd03.prod.outlook.com>

On Fri, Sep 19, 2014 at 01:20:18PM +0800, Xiubo Li-B47053 wrote:
> [...]
> > >    create child: /dcsr@20000000/dcsr-atbrepl@3a8000
> > >    create child: /dcsr@20000000/dcsr-tsgen-ctrl@3a9000
> > >    create child: /dcsr@20000000/dcsr-tsgen-read@3aa000
> > >    create child: /regulators/regulator@0
> > >    ...
> > >
> > > As default the Linux will create all the platform device for each DT node,
> > which
> > > Can be found from "drivers/of/platform.c".
> > >
> > > So we can get the pdev node using the specified DT node, and feel safe to
> > use
> > > it as Pankaj's patch does.
> > >
> > 
> > I mean before the devices are populated from device tree.
> > For example, we usually call of_platform_populate in .init_machine.
> > Before it, we may not be able to get it's device, isn't it?
> > 
> 
> Yes, right.
> 
> For this case, we'd better create the pdev or dev manually for the first time
> We use it, right ?

Yes, that's my understanding.

Regards
Dong Aisheng

> 
> Thanks,
> 
> BRs
> Xiubo
> 
> 
> > Regards
> > Dong Aisheng
> > 
> > > And also we must make sure that the 'syscon' DT nodes has the compatible
> > prop.
> > >
> > > Thanks,
> > >
> > > BRs
> > > Xiubo
> > >
> > >
> > > > Regards
> > > > Dong Aisheng
> > > >
> > > > > ----
> > > > > static struct syscon *of_syscon_register(struct device_node *np)
> > > > >  {
> > > > > +	struct platform_device *pdev;
> > > > >  	struct syscon *syscon;
> > > > >  	struct regmap *regmap;
> > > > >  	void __iomem *base;
> > > > > @@ -142,7 +144,11 @@ static struct syscon *of_syscon_register(struct
> > > > > device_node *np)
> > > > >  	if (!base)
> > > > >  		return ERR_PTR(-ENOMEM);
> > > > >
> > > > > -	regmap = regmap_init_mmio(NULL, base, &syscon_regmap_config);
> > > > > +	pdev = of_find_device_by_node(np);
> > > > > +	if (!(&pdev->dev))
> > > > > +		return ERR_PTR(-ENODEV);
> > > > > +
> > > > > +	regmap = regmap_init_mmio(&pdev->dev, base,
> > &syscon_regmap_config);
> > > > >  	if (IS_ERR(regmap)) {
> > > > >  		pr_err("regmap init failed\n");
> > > > >  		return ERR_CAST(regmap);
> > > > > -------
> > > > >
> > > > > I have tested this in linux-next and it works well. In this way there
> > won't
> > > > > be any issues of
> > > > > dereferencing NULL pointer in regmap.c and at the same time, if DT has
> > > > > {big,little}-endian
> > > > > optional property in syscon device node, it will be taken care.
> > > > >
> > > > > So I would wait for Arnd's opinion about above mentioned changes and
> > then
> > > > > post a new
> > > > > change after addressing Arnd's minor comment along with this fix in next
> > > > > revision.
> > > > >
> > > > >
> > > > > Thanks,
> > > > > Pankaj Dubey
> > > > > > Maybe we could consider create device structure for each syscon
> > compatible
> > > > > device in
> > > > > > syscon driver in of_syscon_register in first time which seems to be
> > > > > reasonable.
> > > > > >
> > > > > > Regards
> > > > > > Dong Aisheng
> > > > > >
> > > > > > > --------------------------------------------
> > > > > > > Subject: [PATCH] regmap: fix NULL pointer dereference in
> > > > > > > regmap_get_val_endian
> > > > > > >
> > > > > > > Recent commits for getting reg endianess causing NULL pointer
> > > > > > > dereference if dev is passed NULL in regmap_init_mmio. This patch
> > > > > > > fixes this issue, and allows to parse reg endianess only if dev and
> > > > > > > dev->of_node exist.
> > > > > > >
> > > > > > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > > > > > > ---
> > > > > > >  drivers/base/regmap/regmap.c |   23 ++++++++++++++---------
> > > > > > >  1 file changed, 14 insertions(+), 9 deletions(-)
> > > > > > >
> > > > > > > diff --git a/drivers/base/regmap/regmap.c
> > > > > > > b/drivers/base/regmap/regmap.c index f2281af..455a877 100644
> > > > > > > --- a/drivers/base/regmap/regmap.c
> > > > > > > +++ b/drivers/base/regmap/regmap.c
> > > > > > > @@ -477,7 +477,7 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  					const struct regmap_bus *bus,
> > > > > > >  					const struct regmap_config *config)
> > > > > {
> > > > > > > -	struct device_node *np = dev->of_node;
> > > > > > > +	struct device_node *np;
> > > > > > >  	enum regmap_endian endian;
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the regmap config
> > > > */
> > > > > > > @@ -487,15 +487,20 @@ static enum regmap_endian
> > > > > > > regmap_get_val_endian(struct device *dev,
> > > > > > >  	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > >  		return endian;
> > > > > > >
> > > > > > > -	/* Parse the device's DT node for an endianness specification */
> > > > > > > -	if (of_property_read_bool(np, "big-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_BIG;
> > > > > > > -	else if (of_property_read_bool(np, "little-endian"))
> > > > > > > -		endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +	/* If the dev and dev->of_node exist try to get endianness from
> > > > DT
> > > > > > > */
> > > > > > > +	if (dev && dev->of_node) {
> > > > > > > +		np = dev->of_node;
> > > > > > >
> > > > > > > -	/* If the endianness was specified in DT, use that */
> > > > > > > -	if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > -		return endian;
> > > > > > > +		/* Parse the device's DT node for an endianness
> > > > > > > specification */
> > > > > > > +		if (of_property_read_bool(np, "big-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_BIG;
> > > > > > > +		else if (of_property_read_bool(np, "little-endian"))
> > > > > > > +			endian = REGMAP_ENDIAN_LITTLE;
> > > > > > > +
> > > > > > > +		/* If the endianness was specified in DT, use that */
> > > > > > > +		if (endian != REGMAP_ENDIAN_DEFAULT)
> > > > > > > +			return endian;
> > > > > > > +	}
> > > > > > >
> > > > > > >  	/* Retrieve the endianness specification from the bus config */
> > > > > > >  	if (bus && bus->val_format_endian_default)
> > > > > > > --
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Pankaj Dubey
> > > > > > >
> > > > > > > > Regards
> > > > > > > > Dong Aisheng
> > > > > > > >
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Pankaj Dubey
> > > > > > > > >
> > > > > > > > > > Regards
> > > > > > > > > > Dong Aisheng
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > linux-arm-kernel mailing list
> > > > > > > > > > > linux-arm-kernel@lists.infradead.org
> > > > > > > > > > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > > > > > > > >
> > > > > > >
> > > > >

  reply	other threads:[~2014-09-19  6:12 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-17  6:31 [PATCH v3] mfd: syscon: Decouple syscon interface from platform devices Pankaj Dubey
2014-09-17  6:31 ` Pankaj Dubey
2014-09-17  8:58 ` Dong Aisheng
2014-09-17  8:58   ` Dong Aisheng
2014-09-17  8:58   ` Dong Aisheng
2014-09-17 11:20   ` Pankaj Dubey
2014-09-17 11:20     ` Pankaj Dubey
2014-09-18  3:05     ` Dong Aisheng
2014-09-18  3:05       ` Dong Aisheng
2014-09-18  3:05       ` Dong Aisheng
2014-09-18  6:03       ` Pankaj Dubey
2014-09-18  6:03         ` Pankaj Dubey
2014-09-18  6:33         ` Li.Xiubo
2014-09-18  6:33           ` Li.Xiubo at freescale.com
2014-09-18  7:55         ` Dong Aisheng
2014-09-18  7:55           ` Dong Aisheng
2014-09-18  7:55           ` Dong Aisheng
2014-09-18  8:58           ` Li.Xiubo
2014-09-18  8:58             ` Li.Xiubo at freescale.com
2014-09-18  9:40             ` Pankaj Dubey
2014-09-18  9:40               ` Pankaj Dubey
2014-09-18  9:36           ` Pankaj Dubey
2014-09-18  9:36             ` Pankaj Dubey
2014-09-18 10:05             ` Dong Aisheng
2014-09-18 10:05               ` Dong Aisheng
2014-09-18 10:05               ` Dong Aisheng
2014-09-19  3:38               ` Li.Xiubo
2014-09-19  3:38                 ` Li.Xiubo at freescale.com
2014-09-19  4:19                 ` Dong Aisheng
2014-09-19  4:19                   ` Dong Aisheng
2014-09-19  4:19                   ` Dong Aisheng
2014-09-19  5:20                   ` Li.Xiubo
2014-09-19  5:20                     ` Li.Xiubo
2014-09-19  5:20                     ` Li.Xiubo at freescale.com
2014-09-19  5:46                     ` Dong Aisheng [this message]
2014-09-19  5:46                       ` Dong Aisheng
2014-09-19  5:46                       ` Dong Aisheng
2014-09-19  9:20                       ` Pankaj Dubey
2014-09-19  9:20                         ` Pankaj Dubey
2014-09-18  7:58         ` Li.Xiubo
2014-09-18  7:58           ` Li.Xiubo at freescale.com
2014-09-17 15:23 ` Arnd Bergmann
2014-09-17 15:23   ` Arnd Bergmann
2014-09-18  3:29   ` Pankaj Dubey
2014-09-18  3:29     ` Pankaj Dubey
2014-09-18  3:07     ` Dong Aisheng
2014-09-18  3:07       ` Dong Aisheng
2014-09-18  3:07       ` Dong Aisheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140919054602.GC19346@shlinux1.ap.freescale.net \
    --to=b29396@freescale.com \
    --cc=Aisheng.Dong@freescale.com \
    --cc=Li.Xiubo@freescale.com \
    --cc=arnd@arndb.de \
    --cc=boris.brezillon@free-electrons.com \
    --cc=chow.kim@samsung.com \
    --cc=geert+renesas@glider.be \
    --cc=joshi@samsung.com \
    --cc=kgene.kim@samsung.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=naushad@samsung.com \
    --cc=pankaj.dubey@samsung.com \
    --cc=thomas.ab@samsung.com \
    --cc=tomasz.figa@gmail.com \
    --cc=vikas.sajjan@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.