[media] radio-gemtek: add PnP support for AOpen FX-3D/Pro Radio
authorOndrej Zary <linux@rainbow-software.org>
Thu, 22 Mar 2012 17:53:29 +0000 (14:53 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 10 Apr 2012 22:53:19 +0000 (19:53 -0300)
Add PnP support to radio-gemtek for AOpen FX-3D/Pro Radio card
(AD1816 + Gemtek radio).

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/radio/radio-gemtek.c

index 2e639ce6f256c4210ff2a427c34b76da5b1d1487..235c0e349820702cf53387f952262e506eee9e06 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/videodev2.h>   /* kernel radio structs         */
 #include <linux/mutex.h>
 #include <linux/io.h>          /* outb, outb_p                 */
+#include <linux/pnp.h>
 #include <linux/slab.h>
 #include <media/v4l2-ioctl.h>
 #include <media/v4l2-device.h>
@@ -283,6 +284,16 @@ static const struct radio_isa_ops gemtek_ops = {
 
 static const int gemtek_ioports[] = { 0x20c, 0x30c, 0x24c, 0x34c, 0x248, 0x28c };
 
+#ifdef CONFIG_PNP
+static struct pnp_device_id gemtek_pnp_devices[] = {
+       /* AOpen FX-3D/Pro Radio */
+       {.id = "ADS7183", .driver_data = 0},
+       {.id = ""}
+};
+
+MODULE_DEVICE_TABLE(pnp, gemtek_pnp_devices);
+#endif
+
 static struct radio_isa_driver gemtek_driver = {
        .driver = {
                .match          = radio_isa_match,
@@ -292,6 +303,14 @@ static struct radio_isa_driver gemtek_driver = {
                        .name   = "radio-gemtek",
                },
        },
+#ifdef CONFIG_PNP
+       .pnp_driver = {
+               .name           = "radio-gemtek",
+               .id_table       = gemtek_pnp_devices,
+               .probe          = radio_isa_pnp_probe,
+               .remove         = radio_isa_pnp_remove,
+       },
+#endif
        .io_params = io,
        .radio_nr_params = radio_nr,
        .io_ports = gemtek_ioports,
@@ -305,12 +324,18 @@ static struct radio_isa_driver gemtek_driver = {
 static int __init gemtek_init(void)
 {
        gemtek_driver.probe = probe;
+#ifdef CONFIG_PNP
+       pnp_register_driver(&gemtek_driver.pnp_driver);
+#endif
        return isa_register_driver(&gemtek_driver.driver, GEMTEK_MAX);
 }
 
 static void __exit gemtek_exit(void)
 {
        hardmute = 1;   /* Turn off PLL */
+#ifdef CONFIG_PNP
+       pnp_unregister_driver(&gemtek_driver.pnp_driver);
+#endif
        isa_unregister_driver(&gemtek_driver.driver);
 }