| .. | .. |
|---|
| 10 | 10 | #include <linux/interrupt.h> |
|---|
| 11 | 11 | #include <linux/irqchip/chained_irq.h> |
|---|
| 12 | 12 | #include <linux/init.h> |
|---|
| 13 | +#include <linux/module.h> |
|---|
| 13 | 14 | #include <linux/msi.h> |
|---|
| 14 | 15 | #include <linux/of_address.h> |
|---|
| 15 | 16 | #include <linux/of_irq.h> |
|---|
| .. | .. |
|---|
| 227 | 228 | mutex_init(&msi->lock); |
|---|
| 228 | 229 | msi->pdev = pdev; |
|---|
| 229 | 230 | |
|---|
| 230 | | - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "csr"); |
|---|
| 231 | | - msi->csr_base = devm_ioremap_resource(&pdev->dev, res); |
|---|
| 231 | + msi->csr_base = devm_platform_ioremap_resource_byname(pdev, "csr"); |
|---|
| 232 | 232 | if (IS_ERR(msi->csr_base)) { |
|---|
| 233 | 233 | dev_err(&pdev->dev, "failed to map csr memory\n"); |
|---|
| 234 | 234 | return PTR_ERR(msi->csr_base); |
|---|
| .. | .. |
|---|
| 255 | 255 | |
|---|
| 256 | 256 | msi->irq = platform_get_irq(pdev, 0); |
|---|
| 257 | 257 | if (msi->irq < 0) { |
|---|
| 258 | | - dev_err(&pdev->dev, "failed to map IRQ: %d\n", msi->irq); |
|---|
| 259 | 258 | ret = msi->irq; |
|---|
| 260 | 259 | goto err; |
|---|
| 261 | 260 | } |
|---|
| .. | .. |
|---|
| 288 | 287 | { |
|---|
| 289 | 288 | return platform_driver_register(&altera_msi_driver); |
|---|
| 290 | 289 | } |
|---|
| 290 | + |
|---|
| 291 | +static void __exit altera_msi_exit(void) |
|---|
| 292 | +{ |
|---|
| 293 | + platform_driver_unregister(&altera_msi_driver); |
|---|
| 294 | +} |
|---|
| 295 | + |
|---|
| 291 | 296 | subsys_initcall(altera_msi_init); |
|---|
| 297 | +MODULE_DEVICE_TABLE(of, altera_msi_of_match); |
|---|
| 298 | +module_exit(altera_msi_exit); |
|---|
| 299 | +MODULE_LICENSE("GPL v2"); |
|---|