diff options
Diffstat (limited to 'arch/m68k/virt/platform.c')
| -rw-r--r-- | arch/m68k/virt/platform.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/arch/m68k/virt/platform.c b/arch/m68k/virt/platform.c index 1560c4140ab9..764f556b4b32 100644 --- a/arch/m68k/virt/platform.c +++ b/arch/m68k/virt/platform.c @@ -30,7 +30,10 @@ static int __init virt_platform_init(void) DEFINE_RES_MEM(virt_bi_data.rtc.mmio + 0x1000, 0x1000), DEFINE_RES_IRQ(virt_bi_data.rtc.irq + 1), }; - struct platform_device *pdev1, *pdev2; + const struct resource virt_ctrl_res[] = { + DEFINE_RES_MEM(virt_bi_data.ctrl.mmio, 0x100), + }; + struct platform_device *pdev1, *pdev2, *pdev3; struct platform_device *pdevs[VIRTIO_BUS_NB]; unsigned int i; int ret = 0; @@ -57,19 +60,30 @@ static int __init virt_platform_init(void) goto err_unregister_tty; } + pdev3 = platform_device_register_simple("qemu-virt-ctrl", + PLATFORM_DEVID_NONE, + virt_ctrl_res, + ARRAY_SIZE(virt_ctrl_res)); + if (IS_ERR(pdev3)) { + ret = PTR_ERR(pdev3); + goto err_unregister_rtc; + } + for (i = 0; i < VIRTIO_BUS_NB; i++) { pdevs[i] = virt_virtio_init(i); if (IS_ERR(pdevs[i])) { ret = PTR_ERR(pdevs[i]); - goto err_unregister_rtc_virtio; + goto err_unregister_virtio; } } return 0; -err_unregister_rtc_virtio: +err_unregister_virtio: while (i > 0) platform_device_unregister(pdevs[--i]); + platform_device_unregister(pdev3); +err_unregister_rtc: platform_device_unregister(pdev2); err_unregister_tty: platform_device_unregister(pdev1); |
