diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2016-09-07 08:45:11 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2017-10-03 08:24:11 -0400 |
commit | 7170a3124ccbc929d0716a77b76b994bb082a3cd (patch) | |
tree | ae36124bba19b5786103d38a088ccb6fc3b22004 | |
parent | 2bd6bf03f4c1c59381d62c61d03f6cc3fe71f66e (diff) |
pcmcia: sa1111: use sa1111_get_irq() to obtain IRQ resources
Use the newly provided sa1111_get_irq() to fetch the IRQ resources for
the SA1111 PCMCIA driver.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r-- | drivers/pcmcia/sa1111_generic.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/pcmcia/sa1111_generic.c b/drivers/pcmcia/sa1111_generic.c index 3d95dffcff7a..da3ddf7769f0 100644 --- a/drivers/pcmcia/sa1111_generic.c +++ b/drivers/pcmcia/sa1111_generic.c | |||
@@ -63,6 +63,7 @@ | |||
63 | #define IDX_IRQ_S1_READY_NINT (3) | 63 | #define IDX_IRQ_S1_READY_NINT (3) |
64 | #define IDX_IRQ_S1_CD_VALID (4) | 64 | #define IDX_IRQ_S1_CD_VALID (4) |
65 | #define IDX_IRQ_S1_BVD1_STSCHG (5) | 65 | #define IDX_IRQ_S1_BVD1_STSCHG (5) |
66 | #define NUM_IRQS (6) | ||
66 | 67 | ||
67 | void sa1111_pcmcia_socket_state(struct soc_pcmcia_socket *skt, struct pcmcia_state *state) | 68 | void sa1111_pcmcia_socket_state(struct soc_pcmcia_socket *skt, struct pcmcia_state *state) |
68 | { | 69 | { |
@@ -137,12 +138,18 @@ int sa1111_pcmcia_add(struct sa1111_dev *dev, struct pcmcia_low_level *ops, | |||
137 | { | 138 | { |
138 | struct sa1111_pcmcia_socket *s; | 139 | struct sa1111_pcmcia_socket *s; |
139 | struct clk *clk; | 140 | struct clk *clk; |
140 | int i, ret = 0; | 141 | int i, ret = 0, irqs[NUM_IRQS]; |
141 | 142 | ||
142 | clk = devm_clk_get(&dev->dev, NULL); | 143 | clk = devm_clk_get(&dev->dev, NULL); |
143 | if (IS_ERR(clk)) | 144 | if (IS_ERR(clk)) |
144 | return PTR_ERR(clk); | 145 | return PTR_ERR(clk); |
145 | 146 | ||
147 | for (i = 0; i < NUM_IRQS; i++) { | ||
148 | irqs[i] = sa1111_get_irq(dev, i); | ||
149 | if (irqs[i] <= 0) | ||
150 | return irqs[i] ? : -ENXIO; | ||
151 | } | ||
152 | |||
146 | ops->socket_state = sa1111_pcmcia_socket_state; | 153 | ops->socket_state = sa1111_pcmcia_socket_state; |
147 | 154 | ||
148 | for (i = 0; i < ops->nr; i++) { | 155 | for (i = 0; i < ops->nr; i++) { |
@@ -156,16 +163,16 @@ int sa1111_pcmcia_add(struct sa1111_dev *dev, struct pcmcia_low_level *ops, | |||
156 | soc_pcmcia_init_one(&s->soc, ops, &dev->dev); | 163 | soc_pcmcia_init_one(&s->soc, ops, &dev->dev); |
157 | s->dev = dev; | 164 | s->dev = dev; |
158 | if (s->soc.nr) { | 165 | if (s->soc.nr) { |
159 | s->soc.socket.pci_irq = dev->irq[IDX_IRQ_S1_READY_NINT]; | 166 | s->soc.socket.pci_irq = irqs[IDX_IRQ_S1_READY_NINT]; |
160 | s->soc.stat[SOC_STAT_CD].irq = dev->irq[IDX_IRQ_S1_CD_VALID]; | 167 | s->soc.stat[SOC_STAT_CD].irq = irqs[IDX_IRQ_S1_CD_VALID]; |
161 | s->soc.stat[SOC_STAT_CD].name = "SA1111 CF card detect"; | 168 | s->soc.stat[SOC_STAT_CD].name = "SA1111 CF card detect"; |
162 | s->soc.stat[SOC_STAT_BVD1].irq = dev->irq[IDX_IRQ_S1_BVD1_STSCHG]; | 169 | s->soc.stat[SOC_STAT_BVD1].irq = irqs[IDX_IRQ_S1_BVD1_STSCHG]; |
163 | s->soc.stat[SOC_STAT_BVD1].name = "SA1111 CF BVD1"; | 170 | s->soc.stat[SOC_STAT_BVD1].name = "SA1111 CF BVD1"; |
164 | } else { | 171 | } else { |
165 | s->soc.socket.pci_irq = dev->irq[IDX_IRQ_S0_READY_NINT]; | 172 | s->soc.socket.pci_irq = irqs[IDX_IRQ_S0_READY_NINT]; |
166 | s->soc.stat[SOC_STAT_CD].irq = dev->irq[IDX_IRQ_S0_CD_VALID]; | 173 | s->soc.stat[SOC_STAT_CD].irq = irqs[IDX_IRQ_S0_CD_VALID]; |
167 | s->soc.stat[SOC_STAT_CD].name = "SA1111 PCMCIA card detect"; | 174 | s->soc.stat[SOC_STAT_CD].name = "SA1111 PCMCIA card detect"; |
168 | s->soc.stat[SOC_STAT_BVD1].irq = dev->irq[IDX_IRQ_S0_BVD1_STSCHG]; | 175 | s->soc.stat[SOC_STAT_BVD1].irq = irqs[IDX_IRQ_S0_BVD1_STSCHG]; |
169 | s->soc.stat[SOC_STAT_BVD1].name = "SA1111 PCMCIA BVD1"; | 176 | s->soc.stat[SOC_STAT_BVD1].name = "SA1111 PCMCIA BVD1"; |
170 | } | 177 | } |
171 | 178 | ||