diff mbox series

ata: pata_platform: Use devm_ioremap_resource()

Message ID 20181215181017.28215-1-shc_work@mail.ru
State Not Applicable
Delegated to: David Miller
Headers show
Series ata: pata_platform: Use devm_ioremap_resource() | expand

Commit Message

Alexander Shiyan Dec. 15, 2018, 6:10 p.m. UTC
Use devm_ioremap_resource() calls.
This will provide a more reasonable exit codes in case of errors.

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
---
 drivers/ata/pata_platform.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

Comments

Sergei Shtylyov Dec. 17, 2018, 3:28 p.m. UTC | #1
Hello!

On 12/15/2018 09:10 PM, Alexander Shiyan wrote:

> Use devm_ioremap_resource() calls.
> This will provide a more reasonable exit codes in case of errors.

   Why -ENOMEM is not enough for you?

> Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> ---
>  drivers/ata/pata_platform.c | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
> index d6f8f54..873150c 100644
> --- a/drivers/ata/pata_platform.c
> +++ b/drivers/ata/pata_platform.c
> @@ -147,19 +147,21 @@ int __pata_platform_probe(struct device *dev, struct resource *io_res,
>  	 * Handle the MMIO case
>  	 */
>  	if (mmio) {
> -		ap->ioaddr.cmd_addr = devm_ioremap(dev, io_res->start,
> -				resource_size(io_res));
> -		ap->ioaddr.ctl_addr = devm_ioremap(dev, ctl_res->start,
> -				resource_size(ctl_res));
> +		ap->ioaddr.cmd_addr = devm_ioremap_resource(dev, io_res);
> +		if (IS_ERR(ap->ioaddr.cmd_addr))
> +			return PTR_ERR(ap->ioaddr.cmd_addr);
> +		ap->ioaddr.ctl_addr = devm_ioremap_resource(dev, ctl_res);
> +		if (IS_ERR(ap->ioaddr.ctl_addr))
> +			return PTR_ERR(ap->ioaddr.ctl_addr);
>  	} else {
>  		ap->ioaddr.cmd_addr = devm_ioport_map(dev, io_res->start,
>  				resource_size(io_res));
>  		ap->ioaddr.ctl_addr = devm_ioport_map(dev, ctl_res->start,
>  				resource_size(ctl_res));
> -	}
> -	if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
> -		dev_err(dev, "failed to map IO/CTL base\n");
> -		return -ENOMEM;
> +		if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
> +			dev_err(dev, "failed to map IO/CTL base\n");
> +			return -ENOMEM;
> +		}

   Note the "imbalance" you're introducing: for MMIO request_mem_region() is
called now (by devm_ioremap_resource(), while for I/O porst request_region()
is not. 

[...]

MBR, Sergei
Alexander Shiyan Dec. 17, 2018, 6:14 p.m. UTC | #2
>Понедельник, 17 декабря 2018, 18:28 +03:00 от Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>:
...
>>  if (mmio) {
>> -ap->ioaddr.cmd_addr = devm_ioremap(dev, io_res->start,
>> -resource_size(io_res));
>> -ap->ioaddr.ctl_addr = devm_ioremap(dev, ctl_res->start,
>> -resource_size(ctl_res));
>> +ap->ioaddr.cmd_addr = devm_ioremap_resource(dev, io_res);
>> +if (IS_ERR(ap->ioaddr.cmd_addr))
>> +return PTR_ERR(ap->ioaddr.cmd_addr);
>> +ap->ioaddr.ctl_addr = devm_ioremap_resource(dev, ctl_res);
>> +if (IS_ERR(ap->ioaddr.ctl_addr))
>> +return PTR_ERR(ap->ioaddr.ctl_addr);
>>  } else {
>>  ap->ioaddr.cmd_addr = devm_ioport_map(dev, io_res->start,
>>  resource_size(io_res));
>>  ap->ioaddr.ctl_addr = devm_ioport_map(dev, ctl_res->start,
>>  resource_size(ctl_res));
>> -}
>> -if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
>> -dev_err(dev, "failed to map IO/CTL base\n");
>> -return -ENOMEM;
>> +if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
>> +dev_err(dev, "failed to map IO/CTL base\n");
>> +return -ENOMEM;
>> +}
>
>   Note the "imbalance" you're introducing: for MMIO request_mem_region() is
>called now (by devm_ioremap_resource(), while for I/O porst request_region()
>is not.

Well, in this case, we can just throw it away.
I just took apart the changes that have accumulated over the past 2.5 years.

Thanks.
---
diff mbox series

Patch

diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index d6f8f54..873150c 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -147,19 +147,21 @@  int __pata_platform_probe(struct device *dev, struct resource *io_res,
 	 * Handle the MMIO case
 	 */
 	if (mmio) {
-		ap->ioaddr.cmd_addr = devm_ioremap(dev, io_res->start,
-				resource_size(io_res));
-		ap->ioaddr.ctl_addr = devm_ioremap(dev, ctl_res->start,
-				resource_size(ctl_res));
+		ap->ioaddr.cmd_addr = devm_ioremap_resource(dev, io_res);
+		if (IS_ERR(ap->ioaddr.cmd_addr))
+			return PTR_ERR(ap->ioaddr.cmd_addr);
+		ap->ioaddr.ctl_addr = devm_ioremap_resource(dev, ctl_res);
+		if (IS_ERR(ap->ioaddr.ctl_addr))
+			return PTR_ERR(ap->ioaddr.ctl_addr);
 	} else {
 		ap->ioaddr.cmd_addr = devm_ioport_map(dev, io_res->start,
 				resource_size(io_res));
 		ap->ioaddr.ctl_addr = devm_ioport_map(dev, ctl_res->start,
 				resource_size(ctl_res));
-	}
-	if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
-		dev_err(dev, "failed to map IO/CTL base\n");
-		return -ENOMEM;
+		if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr) {
+			dev_err(dev, "failed to map IO/CTL base\n");
+			return -ENOMEM;
+		}
 	}
 
 	ap->ioaddr.altstatus_addr = ap->ioaddr.ctl_addr;