* [REGRESSION BUG] at91 is broken on barebox
@ 2014-12-26 9:51 Jean-Christophe PLAGNIOL-VILLARD
2015-01-05 10:23 ` Sascha Hauer
2015-01-06 11:32 ` [PATCH 0/2] FIX AT91 support Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 2 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-12-26 9:51 UTC (permalink / raw)
To: barebox, Sascha Hauer
HI,
since the switch to ERR_PTR & co
for dev_get_resource_by_name & others the at91 is broken
as on barebox we use a 1:1 mapping and the check of the IS_ERR is
((unsigned long)-MAX_ERRNO)
but on at91 the PIT and so on are at 0xfffffd30 so on always seen as
an error
so can we revert the commit on
ommit 92cc1b1f9e3363046583962859a3a8c054f4b94d
& co
Best Regards,
J.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION BUG] at91 is broken on barebox
2014-12-26 9:51 [REGRESSION BUG] at91 is broken on barebox Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-05 10:23 ` Sascha Hauer
2015-01-05 11:51 ` Simon Aittamaa
2015-01-06 11:32 ` [PATCH 0/2] FIX AT91 support Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 12+ messages in thread
From: Sascha Hauer @ 2015-01-05 10:23 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
On Fri, Dec 26, 2014 at 10:51:43AM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> HI,
>
> since the switch to ERR_PTR & co
>
> for dev_get_resource_by_name & others the at91 is broken
>
> as on barebox we use a 1:1 mapping and the check of the IS_ERR is
> ((unsigned long)-MAX_ERRNO)
>
> but on at91 the PIT and so on are at 0xfffffd30 so on always seen as
> an error
Damn :(
Since dev_get_resource_by_name returns a struct resource pointer it
shouldn't be broken, right? What's broken should be:
dev_get_mem_region_by_name
dev_request_mem_region_by_name
dev_request_mem_region
>
> so can we revert the commit on
>
> ommit 92cc1b1f9e3363046583962859a3a8c054f4b94d
Since these commits touch so many files I'm not sure we can simply
revert these commits. All drivers that check for IS_ERR() from the above
functions that were introduced after the commits to revert would have to
be changed aswell.
The functions should still work, but the error check with IS_ERR() does
not, right? So as a stop gap solution we could drop the error check from
the affected drivers and as the next step change the prototype of the
affected functions to something like:
int dev_request_mem_region(struct device_d *dev, int num, void __iomem **base);
Which drivers are affected anyway?
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION BUG] at91 is broken on barebox
2015-01-05 10:23 ` Sascha Hauer
@ 2015-01-05 11:51 ` Simon Aittamaa
0 siblings, 0 replies; 12+ messages in thread
From: Simon Aittamaa @ 2015-01-05 11:51 UTC (permalink / raw)
To: barebox
Since I also ran into this issue just before the holidays, I thought
I'd provide my 0.02$.
On 5 January 2015 at 11:23, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> On Fri, Dec 26, 2014 at 10:51:43AM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> HI,
>>
>> since the switch to ERR_PTR & co
>>
>> for dev_get_resource_by_name & others the at91 is broken
>>
>> as on barebox we use a 1:1 mapping and the check of the IS_ERR is
>> ((unsigned long)-MAX_ERRNO)
>>
>> but on at91 the PIT and so on are at 0xfffffd30 so on always seen as
>> an error
>
> Damn :(
>
> Since dev_get_resource_by_name returns a struct resource pointer it
> shouldn't be broken, right? What's broken should be:
>
> dev_get_mem_region_by_name
> dev_request_mem_region_by_name
> dev_request_mem_region
>
>
>
Correct, these function returns the 'start' field of the struct
resource, which contains the offending address.
>>
>> so can we revert the commit on
>>
>> ommit 92cc1b1f9e3363046583962859a3a8c054f4b94d
>
> Since these commits touch so many files I'm not sure we can simply
> revert these commits. All drivers that check for IS_ERR() from the above
> functions that were introduced after the commits to revert would have to
> be changed aswell.
>
> The functions should still work, but the error check with IS_ERR() does
> not, right? So as a stop gap solution we could drop the error check from
> the affected drivers and as the next step change the prototype of the
> affected functions to something like:
>
> int dev_request_mem_region(struct device_d *dev, int num, void __iomem **base);
>
Sounds like the only sane way, and that is also the point when I
realized that I had to put the fix on my TODO-list and live with the
workaround for now, since I have a few show-stopping issues that I
have to deal with first :-(
> Which drivers are affected anyway?
>
I've had to remove the IS_ERR() check in:
arch/arm/mach-at91/at91sam926x_time.c
drivers/pinctrl/at91-pinctrl.c
drivers/serial/atmel.c
There might be more drivers affected, but the list of drivers to check
shouldn't be that long, see the memory map on page 15 in the reference
manual[1]. Since it checks the base-address the AIC (0xfffff000)
should be fine, but the rest (PIOA, PIOB, ...) could incorrectly fail.
Best,
Simon Aittamaa
[1]: http://www.atmel.com/Images/doc6221.pdf
> Sascha
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] FIX AT91 support
2014-12-26 9:51 [REGRESSION BUG] at91 is broken on barebox Jean-Christophe PLAGNIOL-VILLARD
2015-01-05 10:23 ` Sascha Hauer
@ 2015-01-06 11:32 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2015-01-06 11:32 UTC (permalink / raw)
To: barebox, Sascha Hauer
Hi,
This patch series fix at91 support that is broken for more than 3 months
please apply this on fix releases
Not even tested by Atmel when adding now SoC and Board
The following changes since commit 631be8e6cbe003f469a7e6b54046a743b710d989:
blspec: print error when devicetree not found (2014-12-16 14:29:23 +0100)
are available in the git repository at:
git://git.jcrosoft.org/barebox.git delivery/at91_fix
for you to fetch changes up to 8f48b25818d29d406b3eba170910c6c24bd3a347:
driver: workarroud resource request that conflist with errno PTR (2015-01-05 17:46:38 +0800)
----------------------------------------------------------------
Jean-Christophe PLAGNIOL-VILLARD (2):
arm: at91: fix ecc_mode on non atmel boards
driver: workarroud resource request that conflist with errno PTR
arch/arm/boards/animeo_ip/init.c | 1 +
arch/arm/boards/pm9261/init.c | 1 +
arch/arm/boards/pm9263/init.c | 1 +
arch/arm/boards/pm9g45/init.c | 1 +
arch/arm/boards/qil-a926x/init.c | 1 +
arch/arm/boards/telit-evk-pro3/init.c | 2 ++
arch/arm/boards/tny-a926x/init.c | 1 +
arch/arm/boards/usb-a926x/init.c | 1 +
arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
drivers/pinctrl/pinctrl-at91.c | 6 +++---
drivers/serial/atmel.c | 6 +++---
include/driver.h | 8 ++++++++
13 files changed, 55 insertions(+), 11 deletions(-)
Best Regards,
J.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards
2015-01-06 11:32 ` [PATCH 0/2] FIX AT91 support Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-06 11:37 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2015-01-06 11:37 UTC (permalink / raw)
To: barebox; +Cc: Raphaël Poggi
since
commit 54bccadddd52cb4cbbecd1403b9091fe651bd0fd
Author: Raphaël Poggi <poggi.raph@gmail.com>
mtd: atmel_nand: retrieve ecc_mode from pdata
break most of the non atmel AT91 boards that did not provide a ecc_mode
params in the nand pdata
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Raphaël Poggi <poggi.raph@gmail.com>
---
arch/arm/boards/animeo_ip/init.c | 1 +
arch/arm/boards/pm9261/init.c | 1 +
arch/arm/boards/pm9263/init.c | 1 +
arch/arm/boards/pm9g45/init.c | 1 +
arch/arm/boards/qil-a926x/init.c | 1 +
arch/arm/boards/telit-evk-pro3/init.c | 2 ++
arch/arm/boards/tny-a926x/init.c | 1 +
arch/arm/boards/usb-a926x/init.c | 1 +
8 files changed, 9 insertions(+)
diff --git a/arch/arm/boards/animeo_ip/init.c b/arch/arm/boards/animeo_ip/init.c
index ca64d6d..495dc18 100644
--- a/arch/arm/boards/animeo_ip/init.c
+++ b/arch/arm/boards/animeo_ip/init.c
@@ -93,6 +93,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.bus_width_16 = 0,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c
index 09d7f80..63f4f19 100644
--- a/arch/arm/boards/pm9261/init.c
+++ b/arch/arm/boards/pm9261/init.c
@@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PA16,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
.bus_width_16 = 1,
#else
diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c
index 3dca9e4..2b6b089 100644
--- a/arch/arm/boards/pm9263/init.c
+++ b/arch/arm/boards/pm9263/init.c
@@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PB30,
.enable_pin = AT91_PIN_PD15,
+ .ecc_mode = NAND_ECC_SOFT,
#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
.bus_width_16 = 1,
#else
diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
index 1e43be5..524fe53 100644
--- a/arch/arm/boards/pm9g45/init.c
+++ b/arch/arm/boards/pm9g45/init.c
@@ -49,6 +49,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PD3,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.bus_width_16 = 0,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/qil-a926x/init.c b/arch/arm/boards/qil-a926x/init.c
index 99a9604..4f01e2d 100644
--- a/arch/arm/boards/qil-a926x/init.c
+++ b/arch/arm/boards/qil-a926x/init.c
@@ -43,6 +43,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/telit-evk-pro3/init.c b/arch/arm/boards/telit-evk-pro3/init.c
index e094ea7..ea63b1a 100644
--- a/arch/arm/boards/telit-evk-pro3/init.c
+++ b/arch/arm/boards/telit-evk-pro3/init.c
@@ -18,6 +18,7 @@
#include <gpio.h>
#include <init.h>
#include <linux/clk.h>
+#include <linux/mtd/nand.h>
#include <mach/at91_rstc.h>
#include <mach/at91sam9_smc.h>
#include <mach/board.h>
@@ -33,6 +34,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/tny-a926x/init.c b/arch/arm/boards/tny-a926x/init.c
index ac86457..256f8ba 100644
--- a/arch/arm/boards/tny-a926x/init.c
+++ b/arch/arm/boards/tny-a926x/init.c
@@ -55,6 +55,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c
index 4a28af0..f0e1157 100644
--- a/arch/arm/boards/usb-a926x/init.c
+++ b/arch/arm/boards/usb-a926x/init.c
@@ -59,6 +59,7 @@ static struct atmel_nand_data nand_pdata = {
.det_pin = -EINVAL,
.rdy_pin = AT91_PIN_PC13,
.enable_pin = AT91_PIN_PC14,
+ .ecc_mode = NAND_ECC_SOFT,
.on_flash_bbt = 1,
};
--
2.1.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR
2015-01-06 11:37 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-06 11:37 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 12:44 ` Sascha Hauer
2015-01-08 7:11 ` Sascha Hauer
2015-01-06 12:36 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Raphaël Poggi
2015-01-06 12:59 ` Sascha Hauer
2 siblings, 2 replies; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2015-01-06 11:37 UTC (permalink / raw)
To: barebox
broken since
commit ed6e965824303255cacc1c1a195d3684caa26bce
Author: Sascha Hauer <s.hauer@pengutronix.de>
resource: Let dev_request_mem_region return an error pointer
Introduce dev_request_mem_region_err_null
only used on platform like at91 where the Ressource address collision with
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
drivers/pinctrl/pinctrl-at91.c | 6 +++---
drivers/serial/atmel.c | 6 +++---
include/driver.h | 8 ++++++++
5 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index 789e1ec..cc7ad2f 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
return ret;
}
- pit_base = dev_request_mem_region(dev, 0);
- if (IS_ERR(pit_base))
- return PTR_ERR(pit_base);
+ pit_base = dev_request_mem_region_err_null(dev, 0);
+ if (!pit_base)
+ return -ENOENT;
pit_rate = clk_get_rate(clk) / 16;
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index e0125a1..2375004 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -242,8 +242,8 @@ int register_driver(struct driver_d *drv)
}
EXPORT_SYMBOL(register_driver);
-struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
- int num)
+static struct resource *__dev_get_resource(struct device_d *dev,
+ unsigned long type, int num)
{
int i, n = 0;
@@ -256,6 +256,17 @@ struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
}
}
+ return NULL;
+}
+
+struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
+ int num)
+{
+ struct resource *res = __dev_get_resource(dev, type, num);
+
+ if (res)
+ return res;
+
return ERR_PTR(-ENOENT);
}
@@ -318,6 +329,22 @@ void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *n
}
EXPORT_SYMBOL(dev_request_mem_region_by_name);
+void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num)
+{
+ struct resource *res;
+
+ res = __dev_get_resource(dev, IORESOURCE_MEM, num);
+ if (!res)
+ return res;
+
+ res = request_iomem_region(dev_name(dev), res->start, res->end);
+ if (IS_ERR(res))
+ return ERR_CAST(res);
+
+ return (void __force __iomem *)res->start;
+}
+EXPORT_SYMBOL(dev_request_mem_region_err_null);
+
void __iomem *dev_request_mem_region(struct device_d *dev, int num)
{
struct resource *res;
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index 0d6d2e7..b803f89 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -652,9 +652,9 @@ static int at91_gpio_probe(struct device_d *dev)
}
gpio_banks = max(gpio_banks, alias_idx + 1);
- at91_gpio->regbase = dev_request_mem_region(dev, 0);
- if (IS_ERR(at91_gpio->regbase))
- return PTR_ERR(at91_gpio->regbase);
+ at91_gpio->regbase = dev_request_mem_region_err_null(dev, 0);
+ if (!at91_gpio->regbase)
+ return -ENOENT;
at91_gpio->chip.ops = &at91_gpio_ops;
at91_gpio->chip.ngpio = MAX_NB_GPIO_PER_BANK;
diff --git a/drivers/serial/atmel.c b/drivers/serial/atmel.c
index 1f40692..4e4624e 100644
--- a/drivers/serial/atmel.c
+++ b/drivers/serial/atmel.c
@@ -398,9 +398,9 @@ static int atmel_serial_init_port(struct console_device *cdev)
struct device_d *dev = cdev->dev;
struct atmel_uart_port *uart = to_atmel_uart_port(cdev);
- uart->base = dev_request_mem_region(dev, 0);
- if (IS_ERR(uart->base))
- return PTR_ERR(uart->base);
+ uart->base = dev_request_mem_region_err_null(dev, 0);
+ if (!uart->base)
+ return -ENOENT;
uart->clk = clk_get(dev, "usart");
clk_enable(uart->clk);
diff --git a/include/driver.h b/include/driver.h
index 53e1000..46aae4f 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -206,6 +206,14 @@ void *dev_get_mem_region(struct device_d *dev, int num);
*/
void __iomem *dev_request_mem_region(struct device_d *dev, int num);
+/*
+ * exlusively request register base 'num' for a device
+ * will return NULL on error
+ * only used on platform like at91 where the Ressource address collision with
+ * PTR errno
+ */
+void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num);
+
struct device_d *device_alloc(const char *devname, int id);
int device_add_resources(struct device_d *dev, const struct resource *res, int num);
--
2.1.3
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards
2015-01-06 11:37 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-06 12:36 ` Raphaël Poggi
2015-01-06 12:59 ` Sascha Hauer
2 siblings, 0 replies; 12+ messages in thread
From: Raphaël Poggi @ 2015-01-06 12:36 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
Good catch, I ACK this patch.
2015-01-06 12:37 GMT+01:00 Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com>:
> since
> commit 54bccadddd52cb4cbbecd1403b9091fe651bd0fd
> Author: Raphaël Poggi <poggi.raph@gmail.com>
>
> mtd: atmel_nand: retrieve ecc_mode from pdata
>
> break most of the non atmel AT91 boards that did not provide a ecc_mode
> params in the nand pdata
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Raphaël Poggi <poggi.raph@gmail.com>
> ---
> arch/arm/boards/animeo_ip/init.c | 1 +
> arch/arm/boards/pm9261/init.c | 1 +
> arch/arm/boards/pm9263/init.c | 1 +
> arch/arm/boards/pm9g45/init.c | 1 +
> arch/arm/boards/qil-a926x/init.c | 1 +
> arch/arm/boards/telit-evk-pro3/init.c | 2 ++
> arch/arm/boards/tny-a926x/init.c | 1 +
> arch/arm/boards/usb-a926x/init.c | 1 +
> 8 files changed, 9 insertions(+)
>
> diff --git a/arch/arm/boards/animeo_ip/init.c b/arch/arm/boards/animeo_ip/init.c
> index ca64d6d..495dc18 100644
> --- a/arch/arm/boards/animeo_ip/init.c
> +++ b/arch/arm/boards/animeo_ip/init.c
> @@ -93,6 +93,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PC13,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .bus_width_16 = 0,
> .on_flash_bbt = 1,
> };
> diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c
> index 09d7f80..63f4f19 100644
> --- a/arch/arm/boards/pm9261/init.c
> +++ b/arch/arm/boards/pm9261/init.c
> @@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PA16,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> #if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
> .bus_width_16 = 1,
> #else
> diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c
> index 3dca9e4..2b6b089 100644
> --- a/arch/arm/boards/pm9263/init.c
> +++ b/arch/arm/boards/pm9263/init.c
> @@ -50,6 +50,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PB30,
> .enable_pin = AT91_PIN_PD15,
> + .ecc_mode = NAND_ECC_SOFT,
> #if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16)
> .bus_width_16 = 1,
> #else
> diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
> index 1e43be5..524fe53 100644
> --- a/arch/arm/boards/pm9g45/init.c
> +++ b/arch/arm/boards/pm9g45/init.c
> @@ -49,6 +49,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PD3,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .bus_width_16 = 0,
> .on_flash_bbt = 1,
> };
> diff --git a/arch/arm/boards/qil-a926x/init.c b/arch/arm/boards/qil-a926x/init.c
> index 99a9604..4f01e2d 100644
> --- a/arch/arm/boards/qil-a926x/init.c
> +++ b/arch/arm/boards/qil-a926x/init.c
> @@ -43,6 +43,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PC13,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .on_flash_bbt = 1,
> };
>
> diff --git a/arch/arm/boards/telit-evk-pro3/init.c b/arch/arm/boards/telit-evk-pro3/init.c
> index e094ea7..ea63b1a 100644
> --- a/arch/arm/boards/telit-evk-pro3/init.c
> +++ b/arch/arm/boards/telit-evk-pro3/init.c
> @@ -18,6 +18,7 @@
> #include <gpio.h>
> #include <init.h>
> #include <linux/clk.h>
> +#include <linux/mtd/nand.h>
> #include <mach/at91_rstc.h>
> #include <mach/at91sam9_smc.h>
> #include <mach/board.h>
> @@ -33,6 +34,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PC13,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .on_flash_bbt = 1,
> };
>
> diff --git a/arch/arm/boards/tny-a926x/init.c b/arch/arm/boards/tny-a926x/init.c
> index ac86457..256f8ba 100644
> --- a/arch/arm/boards/tny-a926x/init.c
> +++ b/arch/arm/boards/tny-a926x/init.c
> @@ -55,6 +55,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PC13,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .on_flash_bbt = 1,
> };
>
> diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c
> index 4a28af0..f0e1157 100644
> --- a/arch/arm/boards/usb-a926x/init.c
> +++ b/arch/arm/boards/usb-a926x/init.c
> @@ -59,6 +59,7 @@ static struct atmel_nand_data nand_pdata = {
> .det_pin = -EINVAL,
> .rdy_pin = AT91_PIN_PC13,
> .enable_pin = AT91_PIN_PC14,
> + .ecc_mode = NAND_ECC_SOFT,
> .on_flash_bbt = 1,
> };
>
> --
> 2.1.3
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-06 12:44 ` Sascha Hauer
2015-01-07 3:14 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-08 7:11 ` Sascha Hauer
1 sibling, 1 reply; 12+ messages in thread
From: Sascha Hauer @ 2015-01-06 12:44 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
On Tue, Jan 06, 2015 at 12:37:06PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> broken since
>
> commit ed6e965824303255cacc1c1a195d3684caa26bce
> Author: Sascha Hauer <s.hauer@pengutronix.de>
> resource: Let dev_request_mem_region return an error pointer
>
> Introduce dev_request_mem_region_err_null
>
> only used on platform like at91 where the Ressource address collision with
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
> drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
> drivers/pinctrl/pinctrl-at91.c | 6 +++---
> drivers/serial/atmel.c | 6 +++---
> include/driver.h | 8 ++++++++
> 5 files changed, 46 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
> index 789e1ec..cc7ad2f 100644
> --- a/arch/arm/mach-at91/at91sam926x_time.c
> +++ b/arch/arm/mach-at91/at91sam926x_time.c
> @@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
> return ret;
> }
>
> - pit_base = dev_request_mem_region(dev, 0);
> - if (IS_ERR(pit_base))
> - return PTR_ERR(pit_base);
> + pit_base = dev_request_mem_region_err_null(dev, 0);
> + if (!pit_base)
> + return -ENOENT;
>
> pit_rate = clk_get_rate(clk) / 16;
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index e0125a1..2375004 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -242,8 +242,8 @@ int register_driver(struct driver_d *drv)
> }
> EXPORT_SYMBOL(register_driver);
>
> -struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> - int num)
> +static struct resource *__dev_get_resource(struct device_d *dev,
> + unsigned long type, int num)
> {
> int i, n = 0;
>
> @@ -256,6 +256,17 @@ struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> }
> }
>
> + return NULL;
> +}
> +
> +struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> + int num)
> +{
> + struct resource *res = __dev_get_resource(dev, type, num);
> +
> + if (res)
> + return res;
> +
> return ERR_PTR(-ENOENT);
> }
No need to change dev_get_resource(), it returns a struct resource *
which will never conflict with an err ptr.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards
2015-01-06 11:37 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 12:36 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Raphaël Poggi
@ 2015-01-06 12:59 ` Sascha Hauer
2 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2015-01-06 12:59 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox, Raphaël Poggi
On Tue, Jan 06, 2015 at 12:37:05PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> since
> commit 54bccadddd52cb4cbbecd1403b9091fe651bd0fd
> Author: Raphaël Poggi <poggi.raph@gmail.com>
>
> mtd: atmel_nand: retrieve ecc_mode from pdata
>
> break most of the non atmel AT91 boards that did not provide a ecc_mode
> params in the nand pdata
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Raphaël Poggi <poggi.raph@gmail.com>
Applied, thanks
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR
2015-01-06 12:44 ` Sascha Hauer
@ 2015-01-07 3:14 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-07 7:34 ` Sascha Hauer
0 siblings, 1 reply; 12+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2015-01-07 3:14 UTC (permalink / raw)
To: Sascha Hauer; +Cc: barebox
> On Jan 6, 2015, at 8:44 PM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
>
> On Tue, Jan 06, 2015 at 12:37:06PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> broken since
>>
>> commit ed6e965824303255cacc1c1a195d3684caa26bce
>> Author: Sascha Hauer <s.hauer@pengutronix.de>
>> resource: Let dev_request_mem_region return an error pointer
>>
>> Introduce dev_request_mem_region_err_null
>>
>> only used on platform like at91 where the Ressource address collision with
>>
>> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
>> ---
>> arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
>> drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
>> drivers/pinctrl/pinctrl-at91.c | 6 +++---
>> drivers/serial/atmel.c | 6 +++---
>> include/driver.h | 8 ++++++++
>> 5 files changed, 46 insertions(+), 11 deletions(-)
>>
>> diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
>> index 789e1ec..cc7ad2f 100644
>> --- a/arch/arm/mach-at91/at91sam926x_time.c
>> +++ b/arch/arm/mach-at91/at91sam926x_time.c
>> @@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
>> return ret;
>> }
>>
>> - pit_base = dev_request_mem_region(dev, 0);
>> - if (IS_ERR(pit_base))
>> - return PTR_ERR(pit_base);
>> + pit_base = dev_request_mem_region_err_null(dev, 0);
>> + if (!pit_base)
>> + return -ENOENT;
>>
>> pit_rate = clk_get_rate(clk) / 16;
>>
>> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
>> index e0125a1..2375004 100644
>> --- a/drivers/base/driver.c
>> +++ b/drivers/base/driver.c
>> @@ -242,8 +242,8 @@ int register_driver(struct driver_d *drv)
>> }
>> EXPORT_SYMBOL(register_driver);
>>
>> -struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
>> - int num)
>> +static struct resource *__dev_get_resource(struct device_d *dev,
>> + unsigned long type, int num)
>> {
>> int i, n = 0;
>>
>> @@ -256,6 +256,17 @@ struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
>> }
>> }
>>
>> + return NULL;
>> +}
>> +
>> +struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
>> + int num)
>> +{
>> + struct resource *res = __dev_get_resource(dev, type, num);
>> +
>> + if (res)
>> + return res;
>> +
>> return ERR_PTR(-ENOENT);
>> }
>
> No need to change dev_get_resource(), it returns a struct resource *
> which will never conflict with an err ptr.
but as if no ressource is found it return ERR_PTR(-ENOENT)
so it does conflict
Best Regards,
J.
>
> Sascha
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR
2015-01-07 3:14 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2015-01-07 7:34 ` Sascha Hauer
0 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2015-01-07 7:34 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
On Wed, Jan 07, 2015 at 11:14:32AM +0800, Jean-Christophe PLAGNIOL-VILLARD wrote:
>
> > On Jan 6, 2015, at 8:44 PM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> >
> > On Tue, Jan 06, 2015 at 12:37:06PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> >> broken since
> >>
> >> commit ed6e965824303255cacc1c1a195d3684caa26bce
> >> Author: Sascha Hauer <s.hauer@pengutronix.de>
> >> resource: Let dev_request_mem_region return an error pointer
> >>
> >> Introduce dev_request_mem_region_err_null
> >>
> >> only used on platform like at91 where the Ressource address collision with
> >>
> >> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> >> ---
> >> arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
> >> drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
> >> drivers/pinctrl/pinctrl-at91.c | 6 +++---
> >> drivers/serial/atmel.c | 6 +++---
> >> include/driver.h | 8 ++++++++
> >> 5 files changed, 46 insertions(+), 11 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
> >> index 789e1ec..cc7ad2f 100644
> >> --- a/arch/arm/mach-at91/at91sam926x_time.c
> >> +++ b/arch/arm/mach-at91/at91sam926x_time.c
> >> @@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
> >> return ret;
> >> }
> >>
> >> - pit_base = dev_request_mem_region(dev, 0);
> >> - if (IS_ERR(pit_base))
> >> - return PTR_ERR(pit_base);
> >> + pit_base = dev_request_mem_region_err_null(dev, 0);
> >> + if (!pit_base)
> >> + return -ENOENT;
> >>
> >> pit_rate = clk_get_rate(clk) / 16;
> >>
> >> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> >> index e0125a1..2375004 100644
> >> --- a/drivers/base/driver.c
> >> +++ b/drivers/base/driver.c
> >> @@ -242,8 +242,8 @@ int register_driver(struct driver_d *drv)
> >> }
> >> EXPORT_SYMBOL(register_driver);
> >>
> >> -struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> >> - int num)
> >> +static struct resource *__dev_get_resource(struct device_d *dev,
> >> + unsigned long type, int num)
> >> {
> >> int i, n = 0;
> >>
> >> @@ -256,6 +256,17 @@ struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> >> }
> >> }
> >>
> >> + return NULL;
> >> +}
> >> +
> >> +struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> >> + int num)
> >> +{
> >> + struct resource *res = __dev_get_resource(dev, type, num);
> >> +
> >> + if (res)
> >> + return res;
> >> +
> >> return ERR_PTR(-ENOENT);
> >> }
> >
> > No need to change dev_get_resource(), it returns a struct resource *
> > which will never conflict with an err ptr.
>
> but as if no ressource is found it return ERR_PTR(-ENOENT)
Yes, and this is always correct. Only your
dev_request_mem_region_err_null() function must return NULL in this case
and not ERR_CAST(res) like dev_request_mem_region() does.
void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num)
{
struct resource *res;
res = dev_get_resource(dev, IORESOURCE_MEM, num);
if (IS_ERR(res))
return NULL;
res = request_iomem_region(dev_name(dev), res->start, res->end);
if (IS_ERR(res))
return ERR_CAST(res);
return (void __force __iomem *)res->start;
}
EXPORT_SYMBOL(dev_request_mem_region_err_null);
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 12:44 ` Sascha Hauer
@ 2015-01-08 7:11 ` Sascha Hauer
1 sibling, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2015-01-08 7:11 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
On Tue, Jan 06, 2015 at 12:37:06PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> broken since
>
> commit ed6e965824303255cacc1c1a195d3684caa26bce
> Author: Sascha Hauer <s.hauer@pengutronix.de>
> resource: Let dev_request_mem_region return an error pointer
>
> Introduce dev_request_mem_region_err_null
>
> only used on platform like at91 where the Ressource address collision with
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> arch/arm/mach-at91/at91sam926x_time.c | 6 +++---
> drivers/base/driver.c | 31 +++++++++++++++++++++++++++++--
> drivers/pinctrl/pinctrl-at91.c | 6 +++---
> drivers/serial/atmel.c | 6 +++---
> include/driver.h | 8 ++++++++
> 5 files changed, 46 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
> index 789e1ec..cc7ad2f 100644
> --- a/arch/arm/mach-at91/at91sam926x_time.c
> +++ b/arch/arm/mach-at91/at91sam926x_time.c
> @@ -89,9 +89,9 @@ static int at91_pit_probe(struct device_d *dev)
> return ret;
> }
>
> - pit_base = dev_request_mem_region(dev, 0);
> - if (IS_ERR(pit_base))
> - return PTR_ERR(pit_base);
> + pit_base = dev_request_mem_region_err_null(dev, 0);
> + if (!pit_base)
> + return -ENOENT;
>
> pit_rate = clk_get_rate(clk) / 16;
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index e0125a1..2375004 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -242,8 +242,8 @@ int register_driver(struct driver_d *drv)
> }
> EXPORT_SYMBOL(register_driver);
>
> -struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> - int num)
> +static struct resource *__dev_get_resource(struct device_d *dev,
> + unsigned long type, int num)
> {
> int i, n = 0;
>
> @@ -256,6 +256,17 @@ struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> }
> }
>
> + return NULL;
> +}
> +
> +struct resource *dev_get_resource(struct device_d *dev, unsigned long type,
> + int num)
> +{
> + struct resource *res = __dev_get_resource(dev, type, num);
> +
> + if (res)
> + return res;
> +
> return ERR_PTR(-ENOENT);
> }
>
> @@ -318,6 +329,22 @@ void __iomem *dev_request_mem_region_by_name(struct device_d *dev, const char *n
> }
> EXPORT_SYMBOL(dev_request_mem_region_by_name);
>
> +void __iomem *dev_request_mem_region_err_null(struct device_d *dev, int num)
> +{
> + struct resource *res;
> +
> + res = __dev_get_resource(dev, IORESOURCE_MEM, num);
> + if (!res)
> + return res;
> +
> + res = request_iomem_region(dev_name(dev), res->start, res->end);
> + if (IS_ERR(res))
> + return ERR_CAST(res);
The function promises to return NULL on error, so this is wrong here.
I just sent an updated patch so that the release doesn't get delayed any
more.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-01-08 7:11 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-26 9:51 [REGRESSION BUG] at91 is broken on barebox Jean-Christophe PLAGNIOL-VILLARD
2015-01-05 10:23 ` Sascha Hauer
2015-01-05 11:51 ` Simon Aittamaa
2015-01-06 11:32 ` [PATCH 0/2] FIX AT91 support Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 11:37 ` [PATCH 2/2] driver: workarroud resource request that conflist with errno PTR Jean-Christophe PLAGNIOL-VILLARD
2015-01-06 12:44 ` Sascha Hauer
2015-01-07 3:14 ` Jean-Christophe PLAGNIOL-VILLARD
2015-01-07 7:34 ` Sascha Hauer
2015-01-08 7:11 ` Sascha Hauer
2015-01-06 12:36 ` [PATCH 1/2] arm: at91: fix ecc_mode on non atmel boards Raphaël Poggi
2015-01-06 12:59 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox