diff options
| author | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
| commit | 8e4bff4cab0ddac6060645b0715210484d02ff40 (patch) | |
| tree | 3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/net/irda/ep7211-sir.c | |
Diffstat (limited to 'drivers/net/irda/ep7211-sir.c')
| -rw-r--r-- | drivers/net/irda/ep7211-sir.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/drivers/net/irda/ep7211-sir.c b/drivers/net/irda/ep7211-sir.c new file mode 100644 index 00000000..5fe1f4dd --- /dev/null +++ b/drivers/net/irda/ep7211-sir.c @@ -0,0 +1,70 @@ +/* + * IR port driver for the Cirrus Logic CLPS711X processors + * + * Copyright 2001, Blue Mug Inc. All rights reserved. + * Copyright 2007, Samuel Ortiz <samuel@sortiz.org> + */ + +#include <linux/module.h> +#include <linux/platform_device.h> + +#include <mach/hardware.h> + +#include "sir-dev.h" + +static int clps711x_dongle_open(struct sir_dev *dev) +{ + unsigned int syscon; + + /* Turn on the SIR encoder. */ + syscon = clps_readl(SYSCON1); + syscon |= SYSCON1_SIREN; + clps_writel(syscon, SYSCON1); + + return 0; +} + +static int clps711x_dongle_close(struct sir_dev *dev) +{ + unsigned int syscon; + + /* Turn off the SIR encoder. */ + syscon = clps_readl(SYSCON1); + syscon &= ~SYSCON1_SIREN; + clps_writel(syscon, SYSCON1); + + return 0; +} + +static struct dongle_driver clps711x_dongle = { + .owner = THIS_MODULE, + .driver_name = "EP7211 IR driver", + .type = IRDA_EP7211_DONGLE, + .open = clps711x_dongle_open, + .close = clps711x_dongle_close, +}; + +static int clps711x_sir_probe(struct platform_device *pdev) +{ + return irda_register_dongle(&clps711x_dongle); +} + +static int clps711x_sir_remove(struct platform_device *pdev) +{ + return irda_unregister_dongle(&clps711x_dongle); +} + +static struct platform_driver clps711x_sir_driver = { + .driver = { + .name = "sir-clps711x", + .owner = THIS_MODULE, + }, + .probe = clps711x_sir_probe, + .remove = clps711x_sir_remove, +}; +module_platform_driver(clps711x_sir_driver); + +MODULE_AUTHOR("Samuel Ortiz <samuel@sortiz.org>"); +MODULE_DESCRIPTION("EP7211 IR dongle driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("irda-dongle-13"); /* IRDA_EP7211_DONGLE */ |
