Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pata-rb532-cf: get rid of the irq_to_gpio() call

The RB532 platform specific irq_to_gpio() implementation has been
removed with commit 832f5dacfa0b ("MIPS: Remove all the uses of
custom gpio.h"). Now the platform uses the generic stub which causes
the following error:

pata-rb532-cf pata-rb532-cf: no GPIO found for irq149
pata-rb532-cf: probe of pata-rb532-cf failed with error -2

Drop the irq_to_gpio() call and get the GPIO number from platform
data instead. After this change, the driver works again:

scsi host0: pata-rb532-cf
ata1: PATA max PIO4 irq 149
ata1.00: CFA: CF 1GB, 20080820, max MWDMA4
ata1.00: 1989792 sectors, multi 0: LBA
ata1.00: configured for PIO4
scsi 0:0:0:0: Direct-Access ATA CF 1GB 0820 PQ: 0\
ANSI: 5
sd 0:0:0:0: [sda] 1989792 512-byte logical blocks: (1.01 GB/971 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't\
support DPO or FUA
sda: sda1 sda2
sd 0:0:0:0: [sda] Attached SCSI disk

Fixes: 832f5dacfa0b ("MIPS: Remove all the uses of custom gpio.h")
Cc: Alban Bedel <albeu@free.fr>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: <stable@vger.kernel.org> #v4.3+
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Gabor Juhos and committed by
Tejun Heo
01836176 287e6611

+10 -1
+10 -1
drivers/ata/pata_rb532_cf.c
··· 32 32 #include <linux/libata.h> 33 33 #include <scsi/scsi_host.h> 34 34 35 + #include <asm/mach-rc32434/rb.h> 36 + 35 37 #define DRV_NAME "pata-rb532-cf" 36 38 #define DRV_VERSION "0.1.0" 37 39 #define DRV_DESC "PATA driver for RouterBOARD 532 Compact Flash" ··· 109 107 int gpio; 110 108 struct resource *res; 111 109 struct ata_host *ah; 110 + struct cf_device *pdata; 112 111 struct rb532_cf_info *info; 113 112 int ret; 114 113 ··· 125 122 return -ENOENT; 126 123 } 127 124 128 - gpio = irq_to_gpio(irq); 125 + pdata = dev_get_platdata(&pdev->dev); 126 + if (!pdata) { 127 + dev_err(&pdev->dev, "no platform data specified\n"); 128 + return -EINVAL; 129 + } 130 + 131 + gpio = pdata->gpio_pin; 129 132 if (gpio < 0) { 130 133 dev_err(&pdev->dev, "no GPIO found for irq%d\n", irq); 131 134 return -ENOENT;