diff options
author | Michal Sojka <sojkam1@fel.cvut.cz> | 2017-03-16 09:50:09 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-04-08 12:13:28 -0400 |
commit | a15d2ddba9ee94b252d2737419bff285d6b0e239 (patch) | |
tree | be6ea8a966c7bd24644f7f02aea3c6d06e2e927a | |
parent | 171058fb0883247b3a484a542b5dc89753c57cb5 (diff) |
uio_mf624: Refactor memory info initialization
No functional changes. Move initialization of struct uio_mem to a
function. This will allow the next commit to change the initialization
code at a single place rather that at three different places.
Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/uio/uio_mf624.c | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/drivers/uio/uio_mf624.c b/drivers/uio/uio_mf624.c index d1f95a1567bb..8f30fa1af2ab 100644 --- a/drivers/uio/uio_mf624.c +++ b/drivers/uio/uio_mf624.c | |||
@@ -127,6 +127,20 @@ static int mf624_irqcontrol(struct uio_info *info, s32 irq_on) | |||
127 | return 0; | 127 | return 0; |
128 | } | 128 | } |
129 | 129 | ||
130 | static int mf624_setup_mem(struct pci_dev *dev, int bar, struct uio_mem *mem, const char *name) | ||
131 | { | ||
132 | mem->name = name; | ||
133 | mem->addr = pci_resource_start(dev, bar); | ||
134 | if (!mem->addr) | ||
135 | return -ENODEV; | ||
136 | mem->size = pci_resource_len(dev, bar); | ||
137 | mem->memtype = UIO_MEM_PHYS; | ||
138 | mem->internal_addr = pci_ioremap_bar(dev, bar); | ||
139 | if (!mem->internal_addr) | ||
140 | return -ENODEV; | ||
141 | return 0; | ||
142 | } | ||
143 | |||
130 | static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) | 144 | static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) |
131 | { | 145 | { |
132 | struct uio_info *info; | 146 | struct uio_info *info; |
@@ -147,37 +161,15 @@ static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
147 | /* Note: Datasheet says device uses BAR0, BAR1, BAR2 -- do not trust it */ | 161 | /* Note: Datasheet says device uses BAR0, BAR1, BAR2 -- do not trust it */ |
148 | 162 | ||
149 | /* BAR0 */ | 163 | /* BAR0 */ |
150 | info->mem[0].name = "PCI chipset, interrupts, status " | 164 | if (mf624_setup_mem(dev, 0, &info->mem[0], "PCI chipset, interrupts, status " |
151 | "bits, special functions"; | 165 | "bits, special functions")) |
152 | info->mem[0].addr = pci_resource_start(dev, 0); | ||
153 | if (!info->mem[0].addr) | ||
154 | goto out_release; | 166 | goto out_release; |
155 | info->mem[0].size = pci_resource_len(dev, 0); | ||
156 | info->mem[0].memtype = UIO_MEM_PHYS; | ||
157 | info->mem[0].internal_addr = pci_ioremap_bar(dev, 0); | ||
158 | if (!info->mem[0].internal_addr) | ||
159 | goto out_release; | ||
160 | |||
161 | /* BAR2 */ | 167 | /* BAR2 */ |
162 | info->mem[1].name = "ADC, DAC, DIO"; | 168 | if (mf624_setup_mem(dev, 2, &info->mem[1], "ADC, DAC, DIO")) |
163 | info->mem[1].addr = pci_resource_start(dev, 2); | ||
164 | if (!info->mem[1].addr) | ||
165 | goto out_unmap0; | ||
166 | info->mem[1].size = pci_resource_len(dev, 2); | ||
167 | info->mem[1].memtype = UIO_MEM_PHYS; | ||
168 | info->mem[1].internal_addr = pci_ioremap_bar(dev, 2); | ||
169 | if (!info->mem[1].internal_addr) | ||
170 | goto out_unmap0; | 169 | goto out_unmap0; |
171 | 170 | ||
172 | /* BAR4 */ | 171 | /* BAR4 */ |
173 | info->mem[2].name = "Counter/timer chip"; | 172 | if (mf624_setup_mem(dev, 4, &info->mem[2], "Counter/timer chip")) |
174 | info->mem[2].addr = pci_resource_start(dev, 4); | ||
175 | if (!info->mem[2].addr) | ||
176 | goto out_unmap1; | ||
177 | info->mem[2].size = pci_resource_len(dev, 4); | ||
178 | info->mem[2].memtype = UIO_MEM_PHYS; | ||
179 | info->mem[2].internal_addr = pci_ioremap_bar(dev, 4); | ||
180 | if (!info->mem[2].internal_addr) | ||
181 | goto out_unmap1; | 173 | goto out_unmap1; |
182 | 174 | ||
183 | info->irq = dev->irq; | 175 | info->irq = dev->irq; |