Commit | Line | Data |
---|---|---|
e97e2ddf | 1 | /* |
96070ae4 | 2 | * IR port driver for the Cirrus Logic CLPS711X processors |
e97e2ddf SO |
3 | * |
4 | * Copyright 2001, Blue Mug Inc. All rights reserved. | |
5 | * Copyright 2007, Samuel Ortiz <samuel@sortiz.org> | |
6 | */ | |
e97e2ddf | 7 | |
96070ae4 AS |
8 | #include <linux/module.h> |
9 | #include <linux/platform_device.h> | |
e97e2ddf | 10 | |
a09e64fb | 11 | #include <mach/hardware.h> |
e97e2ddf SO |
12 | |
13 | #include "sir-dev.h" | |
14 | ||
96070ae4 | 15 | static int clps711x_dongle_open(struct sir_dev *dev) |
e97e2ddf SO |
16 | { |
17 | unsigned int syscon; | |
18 | ||
19 | /* Turn on the SIR encoder. */ | |
20 | syscon = clps_readl(SYSCON1); | |
21 | syscon |= SYSCON1_SIREN; | |
22 | clps_writel(syscon, SYSCON1); | |
23 | ||
24 | return 0; | |
25 | } | |
26 | ||
96070ae4 | 27 | static int clps711x_dongle_close(struct sir_dev *dev) |
e97e2ddf SO |
28 | { |
29 | unsigned int syscon; | |
30 | ||
31 | /* Turn off the SIR encoder. */ | |
32 | syscon = clps_readl(SYSCON1); | |
33 | syscon &= ~SYSCON1_SIREN; | |
34 | clps_writel(syscon, SYSCON1); | |
35 | ||
36 | return 0; | |
37 | } | |
38 | ||
96070ae4 AS |
39 | static struct dongle_driver clps711x_dongle = { |
40 | .owner = THIS_MODULE, | |
41 | .driver_name = "EP7211 IR driver", | |
42 | .type = IRDA_EP7211_DONGLE, | |
43 | .open = clps711x_dongle_open, | |
44 | .close = clps711x_dongle_close, | |
45 | }; | |
46 | ||
47 | static int clps711x_sir_probe(struct platform_device *pdev) | |
e97e2ddf | 48 | { |
96070ae4 | 49 | return irda_register_dongle(&clps711x_dongle); |
e97e2ddf SO |
50 | } |
51 | ||
96070ae4 | 52 | static int clps711x_sir_remove(struct platform_device *pdev) |
e97e2ddf | 53 | { |
96070ae4 | 54 | return irda_unregister_dongle(&clps711x_dongle); |
e97e2ddf SO |
55 | } |
56 | ||
96070ae4 AS |
57 | static struct platform_driver clps711x_sir_driver = { |
58 | .driver = { | |
59 | .name = "sir-clps711x", | |
60 | .owner = THIS_MODULE, | |
61 | }, | |
62 | .probe = clps711x_sir_probe, | |
63 | .remove = clps711x_sir_remove, | |
64 | }; | |
65 | module_platform_driver(clps711x_sir_driver); | |
66 | ||
e97e2ddf SO |
67 | MODULE_AUTHOR("Samuel Ortiz <samuel@sortiz.org>"); |
68 | MODULE_DESCRIPTION("EP7211 IR dongle driver"); | |
69 | MODULE_LICENSE("GPL"); | |
70 | MODULE_ALIAS("irda-dongle-13"); /* IRDA_EP7211_DONGLE */ |