aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-09-07 08:45:11 -0400
committerRussell King <rmk+kernel@armlinux.org.uk>2017-10-03 08:24:11 -0400
commit7170a3124ccbc929d0716a77b76b994bb082a3cd (patch)
treeae36124bba19b5786103d38a088ccb6fc3b22004
parent2bd6bf03f4c1c59381d62c61d03f6cc3fe71f66e (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.c21
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
67void sa1111_pcmcia_socket_state(struct soc_pcmcia_socket *skt, struct pcmcia_state *state) 68void 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