| /* |
| * IR port driver for the Cirrus Logic EP7211 processor. |
| * |
| * Copyright 2001, Blue Mug Inc. All rights reserved. |
| * Copyright 2007, Samuel Ortiz <samuel@sortiz.org> |
| */ |
| #include <linux/module.h> |
| #include <linux/delay.h> |
| #include <linux/tty.h> |
| #include <linux/init.h> |
| #include <linux/spinlock.h> |
| |
| #include <net/irda/irda.h> |
| #include <net/irda/irda_device.h> |
| |
| #include <asm/io.h> |
| #include <mach/hardware.h> |
| |
| #include "sir-dev.h" |
| |
| #define MIN_DELAY 25 /* 15 us, but wait a little more to be sure */ |
| #define MAX_DELAY 10000 /* 1 ms */ |
| |
| static int ep7211_open(struct sir_dev *dev); |
| static int ep7211_close(struct sir_dev *dev); |
| static int ep7211_change_speed(struct sir_dev *dev, unsigned speed); |
| static int ep7211_reset(struct sir_dev *dev); |
| |
| static struct dongle_driver ep7211 = { |
| .owner = THIS_MODULE, |
| .driver_name = "EP7211 IR driver", |
| .type = IRDA_EP7211_DONGLE, |
| .open = ep7211_open, |
| .close = ep7211_close, |
| .reset = ep7211_reset, |
| .set_speed = ep7211_change_speed, |
| }; |
| |
| static int __init ep7211_sir_init(void) |
| { |
| return irda_register_dongle(&ep7211); |
| } |
| |
| static void __exit ep7211_sir_cleanup(void) |
| { |
| irda_unregister_dongle(&ep7211); |
| } |
| |
| static int ep7211_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 ep7211_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 int ep7211_change_speed(struct sir_dev *dev, unsigned speed) |
| { |
| return 0; |
| } |
| |
| static int ep7211_reset(struct sir_dev *dev) |
| { |
| return 0; |
| } |
| |
| MODULE_AUTHOR("Samuel Ortiz <samuel@sortiz.org>"); |
| MODULE_DESCRIPTION("EP7211 IR dongle driver"); |
| MODULE_LICENSE("GPL"); |
| MODULE_ALIAS("irda-dongle-13"); /* IRDA_EP7211_DONGLE */ |
| |
| module_init(ep7211_sir_init); |
| module_exit(ep7211_sir_cleanup); |