123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * 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);
|