Root/
1 | /* |
2 | * Silicon Labs C2 port Linux support |
3 | * |
4 | * Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it> |
5 | * Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it> |
6 | * |
7 | * This program is free software; you can redistribute it and/or modify it |
8 | * under the terms of the GNU General Public License version 2 as published by |
9 | * the Free Software Foundation |
10 | */ |
11 | |
12 | #include <linux/device.h> |
13 | #include <linux/kmemcheck.h> |
14 | |
15 | #define C2PORT_NAME_LEN 32 |
16 | |
17 | /* |
18 | * C2 port basic structs |
19 | */ |
20 | |
21 | /* Main struct */ |
22 | struct c2port_ops; |
23 | struct c2port_device { |
24 | kmemcheck_bitfield_begin(flags); |
25 | unsigned int access:1; |
26 | unsigned int flash_access:1; |
27 | kmemcheck_bitfield_end(flags); |
28 | |
29 | int id; |
30 | char name[C2PORT_NAME_LEN]; |
31 | struct c2port_ops *ops; |
32 | struct mutex mutex; /* prevent races during read/write */ |
33 | |
34 | struct device *dev; |
35 | |
36 | void *private_data; |
37 | }; |
38 | |
39 | /* Basic operations */ |
40 | struct c2port_ops { |
41 | /* Flash layout */ |
42 | unsigned short block_size; /* flash block size in bytes */ |
43 | unsigned short blocks_num; /* flash blocks number */ |
44 | |
45 | /* Enable or disable the access to C2 port */ |
46 | void (*access)(struct c2port_device *dev, int status); |
47 | |
48 | /* Set C2D data line as input/output */ |
49 | void (*c2d_dir)(struct c2port_device *dev, int dir); |
50 | |
51 | /* Read/write C2D data line */ |
52 | int (*c2d_get)(struct c2port_device *dev); |
53 | void (*c2d_set)(struct c2port_device *dev, int status); |
54 | |
55 | /* Write C2CK clock line */ |
56 | void (*c2ck_set)(struct c2port_device *dev, int status); |
57 | }; |
58 | |
59 | /* |
60 | * Exported functions |
61 | */ |
62 | |
63 | #define to_class_dev(obj) container_of((obj), struct class_device, kobj) |
64 | #define to_c2port_device(obj) container_of((obj), struct c2port_device, class) |
65 | |
66 | extern struct c2port_device *c2port_device_register(char *name, |
67 | struct c2port_ops *ops, void *devdata); |
68 | extern void c2port_device_unregister(struct c2port_device *dev); |
69 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9